向 Hive 表中加载数据,从 Hive 表中导出数据

1 建表时候直接指定

如果你的数据已经在HDFS上存在,已经为结构化数据,并且数据所在的HDFS路径不需要维护,那么可以直接在建表的时候使用location指定数据所在的HDFS路径即可。

CREATE [EXTERNAL] TABLE t_lxw1234 (
day STRING,
url STRING)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ' ' 
stored as textfile 
location '/tmp/lxw1234/';

这里内部表和外部表都可以指定,但需要注意,如果是内部表,那么在DROP该表的时候,同时会将LOCATION所指定的目录一起删除。


2 从本地文件系统或者HDFS的一个目录中加载

从本地文件系统或者HDFS的一个目录中加载

如果数据在本地,或者HDFS的某一个目录下,需要加载到目标中或分区中,那么使用LOAD DATA命令即可加载数据:

加载本地文件
LOAD DATA LOCAL INPATH ‘/home/lxw1234/t_lxw1234/’

INTO TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’);

加载HDFS文件
LOAD DATA INPATH ‘/user/lxw1234/t_lxw1234/’

INTO TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’);

这里写图片描述

这里写图片描述


3 从一个子查询中加载数据

这个比较简单,就是将一个查询结果插入到目标表或分区中:

INSERT overwrite TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’)

SELECT day,url from source_table;

4 导出Hive中的数据到文件系统

这里也介绍一下从Hive中导出数据到文件系统(HDFS和本地文件系统)。

语法为:

INSERT OVERWRITE [LOCAL] DIRECTORY directory1
  [ROW FORMAT row_format] [STORED AS file_format] 
  SELECT ... FROM ...

如果指定了LOCAL关键字,则为导出到本地文件系统,否则,导出到HDFS。
使用ROW FORMAT关键字可以指定导出的文件分隔符,比如:

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/lxw1234/' 
  ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
SELECT * FROM t_lxw1234;

该语句将t_lxw1234表的所有数据导出到本地文件系统/tmp/lxw1234/目录,字段间的分隔符为逗号。


5 参考资料

1、[一起学Hive]之七-向Hive表中加载数据
http://lxw1234.com/archives/2015/06/290.htm

2、Hive总结(七)Hive四种数据导入方式
http://blog.csdn.net/lifuxiangcaohui/article/details/40588929


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值