Hive查询结果的几种保存方法

1. 保存到本地

  • 调用hive的标准输出,将查询结果写到指定的文件中
hive -e "select user, login_timestamp from user_login" > /tmp/out.txt  
或者
$ hive -f file.sql > /tmp/out.txt 

$ cat file.sql 
  select user, login_timestamp from user_login
  • 使用INSERT OVERWRITE LOCAL DIRECTORY保存结果到本地
hive> insert overwrite local directory "/tmp/out/"  
    > row format delimited fields terminated by "\t"   
    > select user, login_time from user_login; 
        修改分隔符号为tab
        命令执行后/tmp/out/目录下多了两个文件:
$ find /tmp/out/ -type f  
  /tmp/out/.000000_0.crc  
  /tmp/out/000000_0 

这两个文件存放的内容不一样,其中000000_0存放查询的结果,带有.crc文件存放查询结果文件的crc32校验。

2. 保存结果到HDFS

使用INSERT OVERWRITE DIRECTORY可完成操作

hive> insert overwrite directory "/tmp/out/"  
    > row format delimited fields terminated by "\t"   
    > select user, login_time from user_login; 

3. 保存结果到Hive表

  • 如果结果表已经建好,可以使用INSERT OVERWRITE TABLE将结果写入结果表:
hive> insert overwrite table query_result       
    > select user, login_time from user_login; 
Hive还有追加方式INSERT TABLE,可以在原有数据后面加上新的查询结果。
在上面这个例子基础上,可以再追加一个查询结果:
hive> insert into table query_result  
    > select * from query_result;
  • 如果需要新建一个表,用于存放查询结果,可以使用CREATE TABLE AS SELECT语法
hive> create table query_result   
    > as  
    > select user, login_time from user_login;

4. 使用HDFS直接导出表

Hive是构建在HDFS之上,因此,可使用HDFS的命令hadoop dfs -get直接导出表到本地。
hive> show create table user_login; --找到被导出的表的存放目录
hive> hadoop dfs -get /user/hive/warehouse/test.db/user_login  /tmp/out/
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值