Java採用JDBC的方式串連Hive(SparkSQL)

來源:互聯網
上載者:User

標籤:ams   技術分享   word   param   rownum   遠端連線   .exe   ges   resource   

前兩天,由於系統的架構設計的原因,想通過Java直接存取Hive資料庫,對於我這個Java以及Hadoop平台的菜鳥來說,的確是困難重重,不過,還好是搞定了。感覺也不是很麻煩。這篇文章,作為一個感想記錄下來。( yangyang8848)

一、Hive的訪問方式

一般情況下,Hive是不能直接Java串連並訪問的,後來出現來一個SparkSQL的東東,變得可以通過JDBC的方式訪問串連。首先,我先介紹一些從Linux下訪問的方法:

1、遠程登入到Linux平台:

2、進入到hive資料庫中,我們執行一條查詢語句:

通過可以看到,系統執行了Map/Reduce操作,並最後顯示相關的結果。

這裡有一個乾貨哦:Hive查詢語句不支援類似於Mysql中的分頁查詢的,因此,這裡採用了另外一種辦法進行分頁,自己看圖片學習啦~!

3、下邊我們採用Beeline遠端連線SqarkSQL然後訪問Hive資料。

 

通過上邊頁面可以看到,系統可以正確將資料查詢出來。

二、使用Java代碼進行串連訪問。

如果想要通過Java進行訪問,首先要在引用一下三個Jar包:

 <dependency>          <groupId>org.apache.hive</groupId>          <artifactId>hive-jdbc</artifactId>          <version>1.2.1</version>  </dependency>     <dependency>          <groupId>org.apache.hadoop</groupId>          <artifactId>hadoop-common</artifactId>         <version>2.4.1</version>  </dependency>    <dependency>         <groupId>jdk.tools</groupId>         <artifactId>jdk.tools</artifactId>         <version>1.6</version>         <scope>system</scope>         <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>     </dependency>  

 需要注意的是,包的版本一定要確認好,切勿版本過高

如果發生以下錯誤:

 org.apache.thrift.TApplicationException: Required field ‘client_protocol‘ is unset!   Struct:TOpenSessionReq(client_protocol:null)

則極可能的原因是你項目的hive-jdbc版本和伺服器不一致的原因造成的,替換成和伺服器一致的版本就可以了,

以下存取碼都已經經過了測試,拿走直接用,哈哈:

public static int hiveJDBC_RowCount(String sql,Map<Integer,String> params){try {ResourceBundle rb = ResourceBundle.getBundle("config");    Class.forName(rb.getString("hivedriverClassName")).newInstance();Connection conn = DriverManager.getConnection(rb.getString("hiveurl"),rb.getString("hiveusername"),rb.getString("hivepassword"));java.sql.PreparedStatement pstsm = conn.prepareStatement(sql);for(Integer key : params.keySet()){pstsm.setString(key, params.get(key));}ResultSet resultSet = pstsm.executeQuery();int rowNum = 0;if(resultSet.next()){rowNum = resultSet.getInt(1);}return rowNum; } catch (Exception e) {System.out.println(e);return 0;}}

 

hivedriverClassName=org.apache.hive.jdbc.HiveDriverhiveurl=jdbc:hive2://192.168.31.243:10000/defaulthiveusername=roothivepassword=

 

Java採用JDBC的方式串連Hive(SparkSQL)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.