Hive JDBC——深入淺出學Hive

第一部分:搭建Hive JDBC開發環境
搭建:Steps
新建工程hiveTest
導入Hive依賴的包
Hive  命令行啓動Thrift服務
hive --service hiveserver &
第二部分:基本操作對象的介紹
Connection
說明:與Hive連接的Connection對象
Hive 的連接
jdbc:hive://IP:10000/default“
獲取Connection的方法
DriverManager.getConnection("jdbc:hive://IP:10000/default", "", "");
Statement
說明: 用於執行語句
創建方法
Statement stmt = con.createStatement();
主要方法
executeQuery
execute
ResultSet
說明:用來存儲結果集
創建方法
stmt.executeQuery 方法得到
主要方法
getString()
特殊類型的處理
Array
Map
Struct
第三部分:簡單示例
背景
隨着3G時代的到來,選擇各種移動終端來上網的人越來越多,如手機、平板等,這裏面蘊含着巨大的商機,因爲終端可以直接精確到人。所以對用戶上網日誌的分析,也成爲一個新熱點,這些在數據庫時代是不可想象的,因爲數據規模超大,雲計算解決了這個問
需求描述
分析用戶的手機上網日誌,得到手機流量統計信息與根據終端來獲得流量的統計信息
表規劃
日誌表log
字段
       用戶手機號碼 ,終端類型 ,訪問的URL ,訪問開始時間 ,訪問結束時間 ,訪問流量
    phone string ,client_type  string ,url  string,visit_begintime timestamp,visit_endtime timestamp,traffic  bigint
數據文件
數據間以\t分隔,行之間以\n分隔
數據示例:
      13154587453     andorid www.baidu.com   2011-09-01 17:30:08     2011-09-01 17:31:09     10
數據文件位置:
    /home/test/log.txt
手機號歸屬地phone_location
字段
用戶手機號碼 ,歸屬地
phone string ,location stirng
數據文件
數據間以\t分隔,行之間以\n分隔
數據示例:1334567890 chaoyang
數據文件位置:
/home/test/phone_local.txt
手機流量統計信息total_traffic_by_phone
字段
手機號碼 ,總流量(k) , 歸屬地, 訪問總時長(秒)
               phone string,totol_traffic bigint,area string,visit_total_time timestamp
數據文件
數據間以\t分隔,行之間以\n分隔
     數據示例:
           13154587453 102 chaoyang  123
終端類型統計信息total_traffic_by_client_type
字段
終端類型 ,訪問總流量(k)
       client_type string,totoal_traffic bigint
數據文件
數據間以\t分隔,行之間以\n分隔
     數據示例:
 andorid 1034
實現步驟
初始化數據,表
示例:create external table phone_location (phone string,area string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile
編寫處理邏輯
Java代碼示例
try {
Class.forName(driverName);
Connection con = DriverManager.getConnection("jdbc:hive://IP:10000/default", "", "");
Statement stmt = con.createStatement();
String sql = "show tables ";
// show tables
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
if (res.next()) {
System.out.println(res.getString(1));
}
第四部分:基於Hive的數據庫連接池
基於Hive的數據庫連接池的實現
使用DataSource作爲數據源的實現
DBConnectionManager 採用單例模式
提供獲得連接,關閉連接的方法
setupDataSource()
DBConnectionManager getInstance()
close(Connection conn)
synchronized Connection getConnection()

 

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