溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JDBC連接HIVE

發(fā)布時間:2020-07-21 19:09:26 來源:網(wǎng)絡(luò) 閱讀:1656 作者:興趣e族 欄目:大數(shù)據(jù)

  hive是大數(shù)據(jù)技術(shù)簇中進(jìn)行數(shù)據(jù)倉庫應(yīng)用的基礎(chǔ)組件,是其它類似數(shù)據(jù)倉庫應(yīng)用的對比基準(zhǔn)?;A(chǔ)的數(shù)據(jù)操作我們可以通過腳本方式以hive-client進(jìn)行處理。若需要開發(fā)應(yīng)用程序,則需要使用hive的jdbc驅(qū)動進(jìn)行連接.

代碼連接hive需要先啟動hive的metastore和hiveserver2

hive --service metastore &
hive --service hiveserver2 &

其中hive-site.xml的配置為:

<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.174.131:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>

<property>  
<name>hive.metastore.uris</name>  
<value>thrift://192.168.174.131:9083</value>  
</property>

<property>
<name>hive.support.sql11.reserved.keywords</name>
<value>false</value>
</property>
</configuration>


代碼要想連接hive需要添加兩個依賴:

<!--S:連接hive  -->
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
 <dependency>
   <groupId>org.apache.hive</groupId>
   <artifactId>hive-jdbc</artifactId>
    <!--注:此處的版本要和hive的lib中對應(yīng)jar包的版本一致-->
   <version>1.2.1</version>
</dependency>

<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-common</artifactId>
   <version>2.6.4</version>
</dependency>
<!--E:連接hive  -->

代碼演示:

package com.fwmagic.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


import com.mysql.jdbc.Statement;

public class JdbcHive {
   private static Connection conn;

   private static Statement st;
   
   public static void main(String[] args) throws Exception {
      Connection connection = getConnection();
      System.out.println("connection:"+connection);
      String sql = "show tables";
      PreparedStatement prepareStatement = connection.prepareStatement(sql);
      ResultSet rs = prepareStatement.executeQuery();
      while(rs.next()){
         String db = rs.getString(1);
         System.out.println(db);
      }
   }
   /* 獲取數(shù)據(jù)庫連接的函數(shù) */
   private static Connection getConnection() {
      Connection con = null; // 創(chuàng)建用于連接數(shù)據(jù)庫的Connection對象
      try {
         Class.forName("org.apache.hive.jdbc.HiveDriver");// 加載hive2數(shù)據(jù)驅(qū)動

         con = DriverManager.getConnection(
               "jdbc:hive2://192.168.174.131:10000/default", "root", null);// 創(chuàng)建數(shù)據(jù)連接

      } catch (Exception e) {
         System.out.println("hive數(shù)據(jù)庫連接失敗" + e.getMessage());
      }
      return con; // 返回所建立的數(shù)據(jù)庫連接
   }
}





向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI