码迷,mamicode.com
首页 > 数据库 > 详细

Hive JDBC——深入浅出学Hive

时间:2017-07-07 23:39:43      阅读:448      评论:0      收藏:0      [点我收藏+]

标签:str   获取   关闭   文件   nat   云计算   andorid   exe   bsp   

第一部分:搭建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()

Hive JDBC——深入浅出学Hive

标签:str   获取   关闭   文件   nat   云计算   andorid   exe   bsp   

原文地址:http://www.cnblogs.com/GarfieldEr007/p/7134404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!