歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

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

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

基於Hadoop集群的Hive安裝 http://www.linuxidc.com/Linux/2013-07/87952.htm

Hive內表和外表的區別 http://www.linuxidc.com/Linux/2013-07/87313.htm

Hive詳細教程 http://www.linuxidc.com/Linux/2014-04/100978.htm

Hadoop + Hive + Map +reduce 集群安裝部署 http://www.linuxidc.com/Linux/2013-07/86959.htm

Hive本地獨立模式安裝 http://www.linuxidc.com/Linux/2013-06/86104.htm

Hive學習之WordCount單詞統計 http://www.linuxidc.com/Linux/2013-04/82874.htm

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。

Hive 的詳細介紹:請點這裡
Hive 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved