2014-09-24 49 views
0

在配置單元中可以創建表並將其同時保存在本地嗎?Hive:創建表並在同一時間本地寫入

當我得到我的分析數據時,通常會創建臨時表來跟蹤查詢/腳本中最終的 錯誤。其中一些只是臨時表,而另一些則包含我實際需要用於分析的數據。

我通常使用hive -e "select * from db.table" > filename.tsv來獲取本地數據;然而,當桌子很大時,這可能需要相當長的一段時間。

我想知道在我的腳本中是否有某種方法來創建表並將它同時保存在本地。可能這是不可能的,但我認爲這值得提問。

回答

1

誠實地按照自己的方式來做是最好的方式,但值得注意的是,可以在.hql文件中執行類似的任務以實現自動化。

使用語法是這樣的:

INSERT OVERWRITE LOCAL DIRECTORY '/home/user/temp' select * from table; 

您可以運行一個查詢,並在本地目錄中的某個地方存儲它(只要有足夠的空間和正確的權限)

到這樣做的缺點是用管道你可以很好地將數據存儲爲'|'定界和新行分開,但是這種方法會將值存儲在我認爲的配置單元默認'^ b'中。

一個解決辦法是做這樣的事情:

INSERT OVERWRITE LOCAL DIRECTORY '/home/user/temp' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
select books from table; 

但這只是在蜂巢0.11或更高

+0

感謝瑞安我意識到這個解決方案的:) – lucacerone 2014-09-24 17:57:29