使用JDBC连接hiveserver2

本文介绍如何通过 Java 的 JDBC 接口连接并操作 Hive 数据库,包括启动 HiveServer2、配置 JDBC 驱动、编写并运行查询代码等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 先在linux中启动hiveserver2

命令:hive --service hiverserver2

 

2. 使用Eclipse创建java项目,并在项目中导入以下jar包(可在hadoop/share/lib和hive/lib中找)

3. Hive的JDVC客户端操作步骤

 

4. Java代码

(1) JDBCUtils

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

/**
 * 帮助JDBC获取连接	
 * 以及释放资源
 * @author Dell
 *
 */
public class JDBCUtils {
	
	// 注意:此处不能使用"org.apache.hive.jdbc.HiveDriver.class",否则会报错。
	private static String driver = "org.apache.hive.jdbc.HiveDriver";
	
	// hive默认的端口是10000,default是要连接的hive的数据库的名称
	private static String url = "jdbc:hive2://192.168.137.189:10000/default";
	
	// 注册驱动
	static {
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
	}
	
	// 获取连接
	public static Connection getConnection() {
		try {
			return DriverManager.getConnection(url);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	// 释放资源
	public static void realese(Connection conn, Statement st, ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				rs = null;    // 将某个对象设置为null,那么这个对象会迅速成为垃圾回收的对象
			}
		}
		
		if (st != null) {
			try {
				st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				st = null;    // 将某个对象设置为null,那么这个对象会迅速成为垃圾回收的对象
			}
		}
		
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				conn = null;    // 将某个对象设置为null,那么这个对象会迅速成为垃圾回收的对象
			}
		}
	}

}

(2) HiveJDBCDemo

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import demo.utils.JDBCUtils;

public class HiveJDBCDemo {

	public static void main(String[] args) {
		
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		
		String sql = "select * from employee";
		
		try {
			// 获取连接
			conn = JDBCUtils.getConnection();
			// 创建运行环境
			st = conn.createStatement();
			// 运行HQL
			rs = st.executeQuery(sql);
			
			// 处理数据
			while(rs.next()) {
				// 取出员工的姓名和薪水
				String name = rs.getString(2);
				int sal = rs.getInt(6);
				System.out.println(name + "\t" + sal);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils.realese(conn, st, rs);
		}		
	}
}

5. 将此Java项目打包为jar包,传到linux系统上执行。

<think>好的,我现在需要帮助用户解决在IntelliJ IDEA中创建Maven项目并配置连接HiveServer2的问题。首先,我要回顾用户提供的系统级指令,确保回答符合格式要求,比如行内数学表达式用$...$,独立公式用$$...$$,但这个问题可能不涉及数学公式,所以可能不需要。然后要使用中文,生成相关问题,引用正确。 用户的需求是配置Maven项目连接HiveServer2,所以我要分步骤说明。首先需要确保用户安装了必要的软件,如IDEA、Maven、Hadoop和Hive环境。然后,创建Maven项目,添加Hive JDBC依赖,比如Hive-JDBC的坐标,可能还需要Hadoop相关的依赖,因为连接Hive可能需要Hadoop的库。然后编写Java代码示例,使用JDBC连接HiveServer2,这里要注意驱动类名、连接URL格式,可能需要指定正确的Hive版本和端口。 接着,配置过程中可能会遇到的问题,比如驱动类找不到,这需要检查依赖是否正确,或者是否遗漏了Hadoop的依赖。用户提到的引用中有关于IDEA的问题和依赖配置的错误,比如引用[2]提到@Service导入错误或配置问题,引用[3]提到注解,可能和项目配置有关,但这里主要是JDBC连接,所以可能需要检查Maven依赖和项目结构。 可能还需要处理认证,如果HiveServer2启用了安全认证,比如用户名和密码,或者Kerberos,这里可能需要额外的配置步骤。此外,网络问题,比如端口是否开放,防火墙设置,也是常见的问题点。 然后,生成相关问题,比如如何解决ClassNotFoundException,如何配置认证,或者性能优化等。需要确保每个步骤清晰,引用相关部分,比如在添加依赖时引用[1]提到的Maven项目创建,或者在配置问题时引用[2]中的依赖错误。 最后,检查回答是否符合结构,分步骤说明,代码示例正确,问题相关且合理,引用标识正确放置。可能需要测试代码示例,确保语法正确,比如连接字符串是否正确,驱动类是否正确。同时,提醒用户注意Hive和Hadoop版本兼容性,因为不同版本可能需要不同的依赖版本。</think>### 在IntelliJ IDEA中创建Maven项目连接HiveServer2的配置教程 #### 1. 创建Maven项目 1. 打开IntelliJ IDEA,选择 **File → New → Project** 2. 左侧选择 **Maven**,设置JDK版本(需≥1.8),点击 **Next** 3. 填写GroupId(如`com.example`)和ArtifactId(如`hive-demo`),点击 **Finish** 参考引用[1]的Maven项目初始化流程[^1]。 #### 2. 添加Hive JDBC依赖 在`pom.xml`中添加以下依赖: ```xml <dependencies> <!-- Hive JDBC驱动 --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>3.1.2</version> <!-- 需与HiveServer2版本一致 --> </dependency> <!-- Hadoop公共库 --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.3.1</version> </dependency> </dependencies> ``` #### 3. 编写连接代码 创建Java类示例: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class HiveDemo { public static void main(String[] args) throws Exception { String driverName = "org.apache.hive.jdbc.HiveDriver"; String url = "jdbc:hive2://<hiveserver2-host>:10000/default"; String user = "<username>"; String password = "<password>"; Class.forName(driverName); try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { ResultSet rs = stmt.executeQuery("SHOW TABLES"); while (rs.next()) { System.out.println(rs.getString(1)); } } } } ``` #### 4. 关键配置说明 - **驱动类名**:`org.apache.hive.jdbc.HiveDriver` - **连接URL格式**:`jdbc:hive2://[host]:[port]/[database]` - **端口默认值**:HiveServer2通常使用`10000`端口 - **认证配置**:若启用Kerberos需额外添加JAAS配置[^4] #### 5. 常见问题解决 - **ClassNotFoundException**:检查Maven依赖是否下载完整(IDEA右侧Maven面板点击刷新) - **连接超时**:确认HiveServer2服务状态及防火墙规则 - **认证失败**:参考引用[2]的配置扫描机制检查参数传递[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值