hive查詢結果儲存到本地
阿新 • • 發佈:2018-12-05
使用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指令碼中就可以使用這個值了。