2015-11-11 24 views
0

我正在使用Hive來聚合統計信息,並且我想按客戶所屬行業進行細分。理想情況下,我想將每個行業的統計信息寫入每個行業的單獨輸出文件(例如industry1_stats,industry2_stats等)。我列出了我們客戶所在的各個行業的清單,但該清單並未預先設定。配置單元 - 是否有辦法從列表中動態創建表格

到目前爲止,我從Hive文檔中看到的所有內容都表明,我需要事先知道我想要的表格,並將這些表格硬編碼到我的Hive腳本中。有沒有辦法做到這一點動態,無論是在Hive腳本本身(最好)或通過一些外部代碼踢開Hive腳本之前?

+0

你的清單是怎樣的。這只是一個列表,只有一列(行業名稱)或表中的一列? – hadooper

+0

這是表格中的一列。 –

回答

0

我結束了實現這一目標採用蜂巢的動態分區(每個分區寫入到一個單獨的目錄上磁盤,所以我只能遍歷該文件)。分區官員Hive documentationthis博客文章對我特別有幫助。

1

我建議去一個shell腳本..

獲取列

蜂巢-e列表 '選擇[DBNAME]不同industry_name [表名]。' >列表

遍歷每一行......通過列表的每一行(行業名)作爲參數傳遞給while循環

尾-n +1名單了嗎|而IFS =」'讀-r industry_name

蜂巢-hiveconf MY_VAR = $ industry_name -f my_script.hql

shell腳本保存爲test.sh

和in my_script.hql

use uvtest;
create table $ {hiveconf:MY_VAR}(id INT,name CHAR(10));

你就必須把兩個test.shmy_script.hql在同一個文件夾中。 下面的命令應該從列名列表中創建所有表。

SH test.sh

按照此鏈接,使用shell腳本配置單元: https://www.mapr.com/blog/quick-tips-using-hive-shell-inside-scripts