保存Hive查询结果的方法
Posted allen-rg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保存Hive查询结果的方法相关的知识,希望对你有一定的参考价值。
很多时候,我们需要将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 " " > select user, login_time from user_login;
二、保存结果到hdfs
保存查询结果到hdfs很简单,使用INSERT OVERWRITE DIRECTORY就可以完成操作:
hive> insert overwrite directory "/tmp/out/" > row format delimited fields terminated by " " > 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查询结果的方法的主要内容,如果未能解决你的问题,请参考以下文章