hive查询结果保存到本地

使用hive查询,结果我们通常会保存到hdfs,然后通过sqoop导出工具,将其导出到外部mysql或者其他地方,但是有时候查询结果就是一个数据,比如count(*)的结果,我们希望直接保存到一个中间变量,然后就可以直接将这个结果写入到mysql。
而hive按照条件查询一般会有很多output输出,很难直接捕获到结果。
hive查询结果保存到本地_第1张图片
但是我们可以通过将结果保存到本地文件,然后读取本地文件就可以解决这个问题了。
有两种解决办法:

1、通过输出流重定向的方式将查询结果输入到文件

hive -e "use domestic;select count(*) from uv where thedate=20181021" > /tmp/uv.txt

运行截图:
hive查询结果保存到本地_第2张图片

2、通过hive提供的overwrite语法将结果保存到本地文件夹中:

hive -e "use domestic;insert overwrite local directory '/tmp/uv-local' select count(*) from uv where thedate=20181021"

同样的运行结果会保存在本地的/tmp/uv-local文件夹下:

[lestat@localhost uv]$ cd /tmp/uv-local/
[lestat@localhost uv-local]$ ls
000000_0
[lestat@localhost uv-local]$ cat 000000_0 
2666922
[lestat@PUSH-009 uv-local]$ 

结果直接保存在了文件里面,没有额外的信息,这就很好办了,接下来可以通过cat /tmp/uv-local/000000_0就可以取得结果。在sh脚本中就可以使用这个值了。

你可能感兴趣的:(hadoop)