2017-05-16 72 views
0

我有一個用shell編寫的框架,它調用多個hql文件。Hive -f每次創建新會話

蜂巢-f file1.hql

蜂巢-f file2.hql

蜂巢-f file3.hql

每個蜂箱-f命令創建新的會話,並採取的時間來執行很多命令。很多時候,這些文件中的實際查詢會很快運行,但大部分時間都用於創建新會話。

Deoe配置單元支持會話輪詢/或任何其他機制在hql文件中創建一個會話並在所有其他hive -f調用期間重用它?

+1

好方法:將新查詢附加到單個文件中,最後在一個批處理中執行所有查詢。壞道:你現在在做什麼。醜陋的方式:使用Linux **命名管道**,以便'hive'一旦創建就執行每個查詢,參見參考資料。 http://www.linuxjournal.com/content/using-named-pipes-fifos-bash –

+0

在敘述這個問題時,我試圖保持它如此簡單。在我的實際情況中,hive命令在框架中並不存在,依次爲 (Sequential),其間還有其他邏輯,我無法將所有hql內容保存到一個文件中並運行它。 – Jobs

回答

0

據我所知這是不可能的。充其量,你可以考慮將你的hql文件合併成一個批處理文件。 作爲替代和推薦的方法,您可以考慮切換到HiveServer2服務,例如在Python中使用https://github.com/cloudera/impyla

+0

爲什麼_ _ Python ???只需使用'beeline'命令(JDBC瘦客戶端)而不是'hive'(已棄用的胖客戶端) –

+0

就我而言,Beeline可以用於交互式工作流程,但我無法推薦它用於編程式訪問。 – akirillov

相關問題