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

來源:互聯網
上載者:User

這裡所說的在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

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.