Hadoop Hive概念學習系列之hive里的JDBC編程入門(二十二)


 

 

HiveJDBC示例

        在使用 JDBC 開發 Hive 程序時, 必須首先開啟 Hive 的遠程服務接口。在hive安裝目錄下的bin,使用下面命令進行開啟:

    hive -service hiveserver &  //Hive低版本提供的服務是:Hiveserver
    hive --service hiveserver2 &       //Hive0.11.0以上版本提供了的服務是:Hiveserver2

  我這里使用的Hive1.0版本,故我們使用Hiveserver2服務,下面我使用 Java 代碼通過JDBC連接Hiveserver。

 

 

 

 

 

 

  18.1  測試數據

        本地目錄/home/hadoop/下的djt.txt文件內容(每行數據之間用tab鍵隔開)如下所示:

  1        dajiangtai
  2        hadoop
  3        Hive
  4        hbase
  5        spark

    18.2  程序代碼

  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  import java.sql.Statement;
  public class HiveJdbcTest1 {
           private static String driverName = "org.apache.Hive.jdbc.HiveDriver";//Hive驅動名稱
           private static String url = "jdbc:Hive2://djt11:10000/default";//連接Hive2服務的連接地址,Hive0.11.0以上版本提供了一個全新的服務:HiveServer2
           private static String user = "hadoop";//對HDFS有操作權限的用戶
           private static String password = "";//在非安全模式下,指定一個用戶運行查詢,忽略密碼
           private static String sql = "";
           private static ResultSet res;
           public static void main(String[] args) {
               try {
                   Class.forName(driverName);//加載HiveServer2驅動程序
                   Connection conn = DriverManager.getConnection(url, user, password);//根據URL連接指定的數據庫
                   Statement stmt = conn.createStatement();
                 
                   //創建的表名
                   String tableName = "testHiveDriverTable";
                 
                   /** 第一步:表存在就先刪除 **/
                   sql = "drop table " + tableName;
                   stmt.execute(sql);
                 
                   /** 第二步:表不存在就創建 **/
                   sql = "create table " + tableName + " (key int, value string)  row format delimited fields terminated by '\t' STORED AS TEXTFILE";
                   stmt.execute(sql);
                 
                   // 執行“show tables”操作
                   sql = "show tables '" + tableName + "'";
                   res = stmt.executeQuery(sql);
                   if (res.next()) {
                       System.out.println(res.getString(1));
                   }
                 
                   // 執行“describe table”操作
                   sql = "describe " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {  
                       System.out.println(res.getString(1) + "\t" + res.getString(2));
                   }
                 
                   // 執行“load data into table”操作
                   String filepath = "/home/hadoop/djt.txt";//Hive服務所在節點的本地文件路徑
                   sql = "load data local inpath '" + filepath + "' into table " + tableName;
                   stmt.execute(sql);
                 
                   // 執行“select * query”操作
                   sql = "select * from " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {
                       System.out.println(res.getInt(1) + "\t" + res.getString(2));
                   }
                 
                   // 執行“regular Hive query”操作,此查詢會轉換為MapReduce程序來處理
                   sql = "select count(*) from " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {
                       System.out.println(res.getString(1));
                   }        
                   conn.close();
                   conn = null;
               } catch (ClassNotFoundException e) {
                   e.printStackTrace();
                   System.exit(1);
               } catch (SQLException e) {
                   e.printStackTrace();
                   System.exit(1);
               }
           }
  }

     18.3  運行結果(右擊-->Run as-->Run on Hadoop)

          執行“show tables”運行結果:

        testHivedrivertable

       執行“describe table”運行結果:

      key    int
      value    string

        執行“select * query”運行結果:

      1        dajiangtai
      2        hadoop
      3        Hive
      4        hbase
      5        spark

       執行“regular Hive query”運行結果:

      5




 

 

 

 
        

 

 

 

 

hive jdbc使用

 

Hive項目開發環境搭建(Eclipse\MyEclipse + Maven)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM