hive几种数据导入方式

1.从本地文件系统中导入数据到hive表

 

(1)数据准备(/home/sopdm/test.dat):

 

  1,wyp,25,13188888888

  2,test,30,13899999999

  3,zs,34,89931412

 

(2)首先创建表

use sopdm;

drop table if exists sopdm.wyp;

create table if not exists sopdm.wyp(id int,name string,age int,tel string)

row format delimited

fields terminated by ','

stored as textfile;

 

(3)从本地文件系统中导入数据到Hive表

 

load data local inpath ‘/home/sopdm/test.dat’ into table sopdm.wyp;

 

(4)可以到wyp表的数据目录下查看,如下命令

 

dfs  -ls  /user/sopdm/hive/warehouse/sopdm.db/wyp;

 

2.从HDFS上导入数据到Hive表

 

(1)现在hdfs中创建一个input目录存放HDFS文件

hadoop fs -mkdir input;  或   hadoop fs -mkdir /user/sopdm/input;

 

(2)把本地文件上传到HDFS中,并重命名为test_hdfs.dat

hadoop fs -put /home/sopdm/test.dat /user/sopdm/input/test_hdfs.dat;

 

(3)查看文件

dfs -cat /user/sopdm/input/test_hdfs.dat;

 

(4)将内容导入hive表中

 

--拷贝“本地数据”到“hive”使用:load data local…

--转移“HDFS”到“hive”(必须同一个集群)使用:load data…

load data inpath ‘/user/sopdm/input/test_hdfs.dat’ into table sopdm.wyp;

 

3.从别的Hive表中导入数据到Hive表中

 

create table if not exists sopdm.wyp2(id int,name string,tel string)

row format delimited

fields terminated by ','

stored as textfile;

 

--overwrite是覆盖,into是追加

insert into table sopdm.wyp2

select id,name,tel from sopdm.wyp;

 

--多表插入

--高效方式-查询语句插入多个分区

from sopdm.wyp w

insert overwrite table sopdm.wyp2

    select w.id,w.name,w.tel where w.age=25

insert overwrite table sopdm.wyp2

    select w.id,w.name,w.tel where w.age=27;

 

4.创建Hive表的同时导入查询数据

 

create table sopdm.wyp3

       as select id,name,tel,age from sopdm.wyp where age=25;


5.拷贝文件

 

如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。

hadoop fs –cp source_path target_path

 

6.导出到本地文件系统

 

--不能使用insert into local directory来导出数据,会报错

--只能使用insert overwrite local directory来导出数据

 

--hive0.11版本之前,只能使用默认分隔符^A(ascii码是\00001)

insert overwrite local directory '/home/sopdm/wrk'

select id,name,tel,age from sopdm.wyp; 

 

--hive0.11版本之后,可以指定分隔符

insert overwrite local directory '/home/sopdm/wrk'

row format delimited

fields terminated by ','

select id,name,tel,age from sopdm.wyp;

 

--导出数据到多个输出文件夹

from employees se

insert overwrite local directory ‘/tmp/or_employees’

     select * se where se.cty=’US’ and se.st=’OR’

insert overwrite local directory ‘/tmp/ca_employees’

     select * se where se.cty=’US’ and se.st=’CA’

 

7.导出到HDFS

 

--比导出文件到本地文件系统少了一个local

insert overwritedirectory '/home/sopdm/wrk'

select id,name,tel,age from sopdm.wyp;

 

--hive0.11版本之后,可以指定分隔符

insert overwritedirectory '/home/sopdm/wrk'

row format delimited

fields terminated by ','

select id,name,tel,age from sopdm.wyp;

 

8.导出到hive的另一张表


insert into table sopdm.wyp2

partition(age='25')

select id,name,tel,age from sopdm.wyp;

 

9.使用hive的-e和-f参数命令导出数据

 

--使用hive的-e参数

hive –e “select * from wyp” >> /local/wyp.txt

 

--使用hive的-f参数, wyp.hql中为hql语句

hive –f wyp.hql >> /local/wyp2.txt


你可能感兴趣的:(hive)