码迷,mamicode.com
首页 > 其他好文 > 详细

保存Hive查询结果的方法

时间:2018-07-11 17:58:22      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:不同   rom   min   查询   write   命令   cal   sql   query   

很多时候,我们需要将Hive的查询(select)结果保存起来,方便进一步处理或查看。
在Hive里面提供了不同的方式来保存查询结果,在这里做下总结:

一、保存结果到本地

方法1:调用hive标准输出,将查询结果写到指定的文件中
这个方法最为常见,笔者也经常使用。sql的查询结果将直接保存到/tmp/out.txt中:
$ hive -e "select user, login_timestamp from user_login" > /tmp/out.txt

 

方法2:使用INSERT OVERWRITE LOCAL DIRECTORY结果到本地

hive> insert overwrite local directory "/tmp/out/"                                        
    > select user, login_time from user_login;

  

上面的命令会将select user, login_time from user_login的查询结果保存到/tmp/out/本地目录下。

 

我们查看一下/tmp/out/目录下的文件,发现命令执行后,多了两个文件:

$ find /tmp/out/ -type f
/tmp/out/.000000_0.crc
/tmp/out/000000_0

  

默认的字段分割符有时候可能不太方便,幸好Hive提供了修改分割符号的方法,我们只要在导出时指定就可以了:

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

  

二、保存结果到hdfs

保存查询结果到hdfs很简单,使用INSERT OVERWRITE DIRECTORY就可以完成操作:

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

  

三、保存结果到HIVE表

方法1、已经建好结果表,使用INSERT OVERWRITE TABLE以覆盖方式写入结果表

如果结果表已经建好,可以使用INSERT OVERWRITE TABLE将结果写入结果表:

login_time          	bigint
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;

  

方法2、如果需要新建一个表,用于存放查询结果,可以使用CREATE TABLE AS SELECT语法

hive> create table query_result 
    > as
    > select user, login_time from user_login;

  

 

保存Hive查询结果的方法

标签:不同   rom   min   查询   write   命令   cal   sql   query   

原文地址:https://www.cnblogs.com/Allen-rg/p/9295615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!