Java使用JDBC连接Hive(新版本)API封装

本文介绍了在Java中使用最新版JDBC API连接和操作Hive的实践过程。作者指出,许多在线教程的API已过时,导致执行错误。通过几天的调试,作者找到了正确的做法。关键点在于,新版本的DDL操作不应使用`stmt.executeQuery(sql)`,而应使用`stmt.execute(sql)`,因为DDL不会返回结果集。只有DML操作才会返回结果集。代码示例展示了正确的方法,适用于Hive 1.1.1版本。
摘要由CSDN通过智能技术生成

网上找了很多封装的API,发现都是过时了的,运行报各种错误,经过了几天的调错,终于可以使用java代码操作hive了

首先看看所需的包

这里写图片描述

所有的分析都在代码里面

注意:网上很多代码对于DDL都执行 res = stmt.executeQuery(sql);
这是错的,因为新版本DDL不能返回结果集,会报如下错误
java.sql.SQLException: The query did not generate a result set!
所以只能写 stmt.execute(sql);
它会返回一个boolean值
只有对于DML才能返回结果集
具体看下面的代码大家就懂了,不信的话大家可以试试,我的是1.1.1版本

package com.berg.hive.test1.api;

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.sql.Statement;  

import org.apache.log4j.Logger;  

/** 
 * Hive的JavaApi 
 *  
 * 启动hive的远程服务接口命令行执行:hive --service hiveserver & 
 *  
 * @author 汤高 
 *  
 */  
public class HiveJdbcCli {
     
    //网上写 org.apache.hadoop.hive.jdbc.HiveDriver ,新版本不能这样写
    private static String driverName = "org.apache.hive.jdbc.HiveDriver";  

  //这里是hive2,网上其他人都写hive,在高版本中会报错
    private static String url = "jdbc:hive2://master:10000/default"; 
    private static String user = "hive";  
    private static String password = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值