通过JDBC访问hive集群

来源:互联网 发布:淘宝沙发推荐 编辑:程序博客网 时间:2024/05/19 06:35
hive是大数据结构化的查询工具,之前一直使用cli客户端连接hive集群进行SQL存储过程代码的测试。总体上来看,其实Java通过JDBC访问hive跟使用JDBC访问MySQL和Oracle的代码结构基本雷同。区别在于通过JDBC访问hive访问时,查询性能比较慢,千万级别的表测试查询速度,随机查询10条数据,需要10秒,第一次加载需要30秒以上,如果是条件查询则超过5分钟,复杂查询会有查询超时报错。JDBC方式适合数量在十万以下的表查询,而且不适合复杂的条件查询、关联查询。JDK版本:1.8hive版本:0.13hadoop版本:2.52集群元数据库MySQL库的版本貌似是5.1,这个其实不影响。以下为示例代码:
package com.java.linkhive;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import org.apache.hadoop.conf.Configuration;public class hiveTestCase {    public static void main(String[] args) throws  Exception {        Class.forName("org.apache.hive.jdbc.HiveDriver");       //hive是不支持insert into...values(....)这种操作的        String querySQLTest = "select order_no from order_bill limit 10";        //建立连接对象        Connection con = DriverManager.getConnection("jdbc:hive2://192.XXX.XXX.XXX:10000/DB_AA", "ETL_AA", "ETLABC");        Statement stmt = con.createStatement();        stmt.executeQuery(querySQLTest);        // 执行查询语句        ResultSet res = stmt.executeQuery(querySQLTest);         //输出查询结果         int i=1;          while (res.next()) {            System.out.println(res.getString(1));        }    }}
以下为输出结果(log4j是java的一个标准日志输出包):

这里写图片描述
其实代码上并没有什么难度,主要问题出在jar加载上,由于jar包的缺失导致了代码无法执行,下面是经过N次尝试后,得出的编写Java通过JDBC方式连接hive集群时所需要的Jar包:
这里写图片描述

0 0
原创粉丝点击