Java JDBC方式连接HIVE2

一般连接hive的方式有CLI(登录到服务器或者本地切换到hive环境),Client(SQUIREEL SQL客户端),Web UI(hive --service hwi )等

Java 操作JDBC同普通JDBC数据库一样,首先需要启动Hive 服务打开bin/hive --service hiveserver -p 10000

public List<Integer> getDocIds(String reportDate){
        List<Integer> docIds = new ArrayList<Integer>();
        try {
            System.out.println("get apps...");
            Class.forName("org.apache.hive.jdbc.HiveDriver");
            Connection conn = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "hadoop", "");
            String quary_sql = "use <span style="font-family: Arial, Helvetica, sans-serif;">default</span>";
            PreparedStatement stmt = conn.prepareStatement(quary_sql);
            stmt.execute(quary_sql);
            quary_sql = "select * from t_docid where report_date>=?";
            stmt = conn.prepareStatement(quary_sql);
            stmt.setString(1, reportDate);
            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                docIds.add(rs.getInt(1));
            }
            return docIds;
        }catch (Exception e){
            e.printStackTrace();
        }
        return docIds;
    }

依赖的jar:

hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar
$HIVE_HOME/lib/hive-exec-0.11.0.jar 
$HIVE_HOME/lib/hive-jdbc-0.11.0.jar 
$HIVE_HOME/lib/hive-metastore-0.11.0.jar  
$HIVE_HOME/lib/hive-service-0.11.0.jar   
$HIVE_HOME/lib/libfb303-0.9.0.jar   
$HIVE_HOME/lib/commons-logging-1.0.4.jar  
$HIVE_HOME/lib/slf4j-api-1.6.1.jar
或者maven:

<dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-jdbc</artifactId>
        <version>0.11.0</version>
</dependency>

<dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.2.0</version>
</dependency>

如果报错:

 org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset!   Struct:TOpenSessionReq(client_protocol:null)

则极可能的原因是你项目的hive-jdbc版本和服务器不一致的原因造成的,替换成和服务器一致的版本就可以了,PS:hive前期版本中bug较多,推荐使用最新的版本

参考:http://www.iteblog.com/archives/846

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值