1. 程式人生 > >hive查詢結果儲存到本地

hive查詢結果儲存到本地

使用hive查詢,結果我們通常會儲存到hdfs,然後通過sqoop匯出工具,將其匯出到外部mysql或者其他地方,但是有時候查詢結果就是一個數據,比如count(*)的結果,我們希望直接儲存到一箇中間變數,然後就可以直接將這個結果寫入到mysql。
而hive按照條件查詢一般會有很多output輸出,很難直接捕獲到結果。
在這裡插入圖片描述
但是我們可以通過將結果儲存到本地檔案,然後讀取本地檔案就可以解決這個問題了。
有兩種解決辦法:

1、通過輸出流重定向的方式將查詢結果輸入到檔案

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

執行截圖:
在這裡插入圖片描述

2、通過hive提供的overwrite語法將結果儲存到本地資料夾中:

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

同樣的執行結果會儲存在本地的/tmp/uv-local資料夾下:

[[email protected] uv]$ cd /tmp/uv-local/
[[email protected] uv-local]$ ls
000000_0
[
[email protected] uv-local]$ cat 000000_0 2666922 [[email protected] uv-local]$

結果直接儲存在了檔案裡面,沒有額外的資訊,這就很好辦了,接下來可以通過cat /tmp/uv-local/000000_0就可以取得結果。在sh指令碼中就可以使用這個值了。