如何在Java中執行Hive命令或HiveQL

       這裏所說的在Java中執行Hive命令或HiveQL並不是指Hive Client通過JDBC的方式連接HiveServer(or HiveServer2)執行查詢,而是簡單的在部署了HiveServer的服務器上執行Hive命令。當然這是一個簡單的事情,平常我們通過Hive做簡單的數據分析實驗的時候,都是直接進入Hive執行HiveQL,那我們爲什麼還要在程序中執行呢?

       這裏涉及到了一個問題,通過進入Hive執行HiveQL,我們只能將分析結果打印到屏幕或是存入臨時表,那如果我們想吧分析結果寫入文件,或者我們想對分析結果做進一步的分析,用程序做分析,該怎麼辦?這就是爲什麼要在Java中執行Hive命令。

       Java在1.5過後提供了ProcessBuilder根據運行時環境啓動一個Process調用執行運行時環境下的命令或應用程序(1.5以前使用Runtime),關於ProcessBuilder請參考Java相關文檔。調用代碼如下:

String sql="show tables; select * from test_tb limit 10";
List<String> command = new ArrayList<String>();

command.add("hive");
command.add("-e");
command.add(sql);

List<String> results = new ArrayList<String>();
ProcessBuilder hiveProcessBuilder = new ProcessBuilder(command);
hiveProcess = hiveProcessBuilder.start();

BufferedReader br = new BufferedReader(new InputStreamReader(
		hiveProcess.getInputStream()));
String data = null;
while ((data = br.readLine()) != null) {
	results.add(data);
}
       其中command可以是其它Hive命令,不一定是HiveQL。

       本文產生於個人工作學習筆記,轉載請註明出處http://blog.csdn.net/horace20

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章