hive数据怎么导入

   1.通过外部表导入

  用户在hive上建external表,建表的同时指定hdfs路径,在数据拷贝到指定hdfs路径的同时,也同时完成数据插入external表。

  例如:

  编辑文件test.txt

  $ cat test.txt

  1 hello

  2 world

  3 test

  4 case

  字段之间以't'分割

  启动hive:

  $ hive

  建external表:

  hive> CREATE EXTERNAL TABLE MYTEST(num INT, name STRING)

  > COMMENT 'this is a test'

  > ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'

  > STORED AS TEXTFILE

  > LOCATION '/data/test';

  OK

  Time taken: 0.714 seconds

  hive> show tables;

  OK

  mytest

  partition_test

  partition_test_input

  test

  Time taken: 0.07 seconds

  hive> desc mytest ;

  OK

  num int

  name string

  Time taken: 0.121 seconds|

  数据拷贝到hdfs:

  $ hadoop fs -put test.txt /data/test

  查看hive表数据:

  hive> select * from mytest;

  OK

  1 hello

  2 world

  3 test

  4 case

  Time taken: 0.375 seconds

  hive> select num from mytest;

  Total MapReduce jobs = 1

  Launching Job 1 out of 1

  ......

  Total MapReduce CPU Time Spent: 510 msec

  OK

  1

  2

  3

  4

  Time taken: 27.157 seconds

  这种方式常常用于当hdfs上有一些历史数据,而我们需要在这些数据上做一些hive的操作时使用。这种方式避免了数据拷贝开销

  2.从本地导入

  数据不在hdfs上,直接从本地导入hive表

  文件/home/work/test.txt内容同上

  建表:

  hive> CREATE TABLE MYTEST2(num INT, name STRING)

  > COMMENT 'this is a test2'

  > ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'

  > STORED AS TEXTFILE;

  OK

  Time taken: 0.077 seconds

  导数据入表:

  hive> LOAD DATA LOCAL INPATH '/home/work/test.txt' INTO TABLE MYTEST2;

  Copying data from file:/home/work/test.txt

  Copying file: file:/home/work/test.txt

  Loading data to table default.mytest2

  OK

  Time taken: 0.24 seconds

  查看数据:

  hive> select * from MYTEST2;

  OK

  1 hello

  2 world

  3 test

  4 case

  Time taken: 0.11 seconds

  这种方式导入的本地数据可以是一个文件,一个文件夹或者通配符,需要注意的是,如果是文件夹,文件夹内不能包含子目录,同样,通配符只能通配文件。

  3.从hdfs导入

  上述test.txt文件已经导入/data/test

  则可以使用下述命令直接将数据导入hive表:

  hive> CREATE TABLE MYTEST3(num INT, name STRING)

  > COMMENT "this is a test3"

  > ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'

  > STORED AS TEXTFILE;

  OK

  Time taken: 4.735 seconds

  hive> LOAD DATA INPATH '/data/test/test.txt' INTO TABLE MYTEST3;

  Loading data to table default.mytest3

  OK

  Time taken: 0.337 seconds

  hive> select * from MYTEST3 ;

  OK

  1 hello

  2 world

  3 test

  4 case

  Time taken: 0.227 seconds

  4. 从其它表导入数据:

  hive> CREATE EXTERNAL TABLE MYTEST4(num INT) ;

  OK

  Time taken: 0.091 seconds

  hive> FROM MYTEST3 test3

  > INSERT OVERWRITE TABLE MYTEST4

  > select test3.num where name='world';

  Total MapReduce jobs = 2

  Launching Job 1 out of 2

  Number of reduce tasks is set to 0 since there's no reduce operator

  Starting Job = job_201207230024_0002, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201207230024_0002

  Kill Command = /home/work/hadoop/hadoop-1.0.3/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:9001 -kill job_201207230024_0002

  Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0

  2012-07-23 18:59:02,365 Stage-1 map = 0%, reduce = 0%

  2012-07-23 18:59:08,417 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.62 sec

  2012-07-23 18:59:09,435 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.62 sec

  2012-07-23 18:59:10,445 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.62 sec

  2012-07-23 18:59:11,455 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.62 sec

  2012-07-23 18:59:12,470 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.62 sec

  2012-07-23 18:59:13,489 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.62 sec

  2012-07-23 18:59:14,508 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 0.62 sec

  MapReduce Total cumulative CPU time: 620 msec

  Ended Job = job_201207230024_0002

  Ended Job = -174856900, job is filtered out (removed at runtime).

  Moving data to: hdfs://localhost:9000/tmp/hive-work/hive_2012-07-23_18-58-44_166_189728317691010041/-ext-10000

  Loading data to table default.mytest4

  Deleted hdfs://localhost:9000/user/hive/warehouse/mytest4

  Table default.mytest4 stats: [num_partitions: 0, num_files: 1, num_rows: 0, total_size: 2, raw_data_size: 0]

  1 Rows loaded to mytest4

  MapReduce Jobs Launched:

  Job 0: Map: 1 Accumulative CPU: 0.62 sec HDFS Read: 242 HDFS Write: 2 SUCESS

  Total MapReduce CPU Time Spent: 620 msec

  OK

  Time taken: 30.663 seconds

  hive> select * from mytest4;

  OK

  2

  Time taken: 0.103 seconds

时间: 2024-11-29 10:30:32

hive数据怎么导入的相关文章

hive数据批量导入hbase过程中遇到分区文件不存在异常

问题描述 hive数据批量导入hbase过程中遇到分区文件不存在异常 在做一个hive数据批量导入hbase的方法,根据官方文档一步一步的做下来,但是在生成HFILE文件时却报了一个比较让人纠结的错误,在网上找了很长时间,都木有合适的答案,在hive命令行中执行的代码如下: SET mapred.reduce.tasks=5; SET hive.mapred.partitioner=org.apache.hadoop.mapred.lib.TotalOrderPartitioner; SET t

[Hadoop大数据]——Hive数据的导入导出

Hive作为大数据环境下的数据仓库工具,支持基于hadoop以sql的方式执行mapreduce的任务,非常适合对大量的数据进行全量的查询分析. 本文主要讲述下hive载cli中如何导入导出数据: 导入数据 第一种方式,直接从本地文件系统导入数据 我的本机有一个test1.txt文件,这个文件中有三列数据,并且每列都是以'\t'为分隔 [root@localhost conf]# cat /usr/tmp/test1.txt 1 a1 b1 2 a2 b2 3 a3 b3 4 a4 b 创建数据

sqoop将oracle数据表导入hive中文乱码问题

问题描述 sqoop将oracle数据表导入hive中文乱码问题 请教各位大神一个问题,就是将oracle的表导入到hive后中文乱码,oracle库的编码格式为US7ASCII,各位大神有没有遇到过类型的问题,或者有没有好的解决方案建议,谢谢了.附注:现在已经试过convert(nsrdzdah,'utf8','US7ASCII'),但是还是乱码:还有就是修改hive jdbc jar包,感觉不靠谱就没有试 解决方案 此问题已经解决 参考 http://www.aboutyun.com/hom

一篇文章彻底明白Hive数据存储的各种模式

Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据;而元数据是用来存储表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等.下面分别来介绍. 一.Hive的数据存储 在让你真正明白什么是hive 博文中我们提到Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中.Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据.所

oracle 10g数据泵和导入导出性能对比(五)影响数据泵导入性能的最大因素

前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章讨论影响数据泵导入性能的最大因素. 前面写了几篇文章,分别介绍EXP/IMP与EXPDP/IMPDP的性能对比,根据前面几篇文章的描述,如果不使用并行,似乎IMPDP的效率要比IMP没有一个数量级的提示.对于当前的环境而言,事实确实如此.不过前面一直没有描述一个重要的因素,当然的数据库环境由于配置了STANDBY数据库,因此不但处于归档模式,还设置了FORCE LOGGING:

Oracle 11g r2数据泵新特性简介(四)数据泵导入新增的DATA_OPTIONS

Oracle的11gr2版本中,并没有对数据泵做出多大的改动,主要是增加了对原始版本参数的支持,并且去掉了一些小的限制. 这一篇介绍数据泵导入新增的DATA_OPTIONS参数. 在11.2之前,数据泵的导入只提供了一个DATA_OPTIONS--SKIP_CONSTRAINT_ERRORS,而在11.2中,DATA_OPTIONS又增加了一个可用的值:DIABLE_APPEND_HINT. 一般来说我们希望数据泵使用直接路径的方式导入,因为导入的效率会很高.但是有的时候,我们并不需要采用直接路

Delphi编程将数据库数据快速导入Excel

在开发数据库应用程序中,经常要将类型相同的数据导出来,放到Excel文件中,利用Excel强大的编辑功能,对数据作进一步的加工处理.这有许多的方法,我们可以使用OLE技术,在Delphi中创建一个自动化对象,通过该对象来传送数据.也可以使用ADO,通过与Excel数据存储建立连接,使用ADO这种独立于数据库后端的技术来导出数据集的数据. 可这两种技术都有一个共同的缺点,那就是慢,数据量少还好,用户不会有太多的感觉,可一旦数据量大,比如,超过1千条,速度就让人难以忍受了,那么有没有更好的办法,既可

oracle数据泵导入分区表统计信息报错(二) 深入研究问题的现象

今天在进行数据泵导入操作时,发现一个bug. 上一篇记录了问题的现象,这一篇继续深入研究. 上一篇文章已经描述了问题的产生,而且提到了这个问题很难重现.无论如何去模拟实际的情况,都无法重现问题. 为了重现这个问题,在RAC数据库环境中,仿照问题表创建了分区表.并仿照问题数据库收集了统计信息的方式进行了统计信息的收集,都无法重现问题. 但是,利用问题数据库导出的统计信息,就可以重现问题.上周五发现的问题,但是由于数据不方便带回家,因此由于时间的限制仅仅测试了这么多. 今天一早到了公司,就继续这个问

oracle数据泵导入分区表统计信息报错(一) 问题的现象

今天在进行数据泵导入操作时,发现一个bug. 数据库版本Oracle 10203 for Solaris RAC,执行导入在处理表的统计信息时报错,错误信息为:ORA-39083和ORA-917. 经过仔细排查,对比源数据库分析情况和目标数据库的表分析情况,发现所有的分区表的统计信息都没有导入. 基本确认问题是IMPDP在处理分区表的统计信息时出现了问题. 可惜现在问题无法通过构造案例来重现:在目标数据库中(RAC环境)尝试建立分区表并执行数据泵的导出和导入,无法重现问题.将源数据库中出现问题的