java通過jdbc連接hive1.0.0(僞分佈)的問題

通過java連接hive1.0.0 讀取數據的時候(僞分佈式),

首先在hbase中已經有表flowSets,表的結構是一個列簇:flow;其中有一列爲bytes;啓動hive:hive -hiveconf hbase.master=master:60000

接下來創建表:create external table flowsets(key string, value string)

stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

with serdeproperties ("hbase.columns.mapping" = ":key,flow:bytes")

tblproperties ("hbase.table.name" = "flowSets");


如果建表語句發現超過key的最大字節數:765Byte,表示mysql的編碼有問題,該改爲utf8


此刻你進入hbase shell中發現多了一張表 ‘flowSets’
可以先跳過這句話hbase.table.name定義在hbasetable名稱,

多列時:data:1data:2;多列族時:data1:1,data2:1;)
hbase.columns.mapping定義在hbase的列族,裏面的:key是固定值而且要保證在表pokes中的foo字段是唯一值


接下來

第一步,啓動hadoop和hbase;


第二步,通過命令:hive --service hiveserver2   啓動hive端


第三步,在eclipse中創建項目

需要導入的包如下:


代碼如下:package team.ujs.loganalysis.test;

import org.apache.hive.jdbc.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class HiveConnectionTest3 {
     private static String driverName="org.apache.hive.jdbc.HiveDriver";
     public static void main(String[] args) throws SQLException{
         try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
         Connection con= DriverManager.getConnection("jdbc:hive2://121.248.220.107:10000/default","","");
         Statement st = con.createStatement();
         ResultSet rs = st.executeQuery("describe flowsets");
         while(rs.next()){
             System.out.println(rs.getString(1));
         }
     }
}

【注意:】如果不是jdbc:hive2的話,會報

運行成功之後:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章