hive学习 —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.使用sqoop从关系数据库导入数据到Hive表

1)

sqoop import --connect jdbc:mysql://10.10.166.10:3306/database_name --username XXXX--password XXXX --table source_table_name --fields-terminated-by '\t'  -m 1 --hive-database  obd_minix --hive-table to_table_name  --where "id  in('P008000400000981','P008000400000982','P008000400000983' ) and  unix_timestamp(client_time) > 1470240000 - 86400*14"  --hive-import --hive-overwrite


--table 不能与 --query 一起使用

--where 限制导入的条件


2)
sqoop import --connect jdbc:mysql://10.95.3.49:3306/workflow --username shirdrn -P 
--query 'SELECT users.*, tags.tag FROM users JOIN tags ON (users.id = tags.user_id) WHERE $CONDITIONS' 
--split-byusers.id --target-dir /hive/tag_db/user_tags  -- --default-character-set=utf-8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mtj66

看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值