HIVE-java api

Hive JDBC 连接与数据检索
本文介绍如何使用Java JDBC连接Hive Server2并执行SQL查询,演示了从Hive表中检索数据的过程。文章包含配置参数、依赖项及代码实现。

pom

 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

	<dependency>  
	    <groupId>jdk.tools</groupId>  
	    <artifactId>jdk.tools</artifactId>  
	    <version>1.7</version>  
	    <scope>system</scope>  
	    <systemPath>C:/Program Files/Java/jdk1.8.0_74/lib/tools.jar</systemPath>  
	</dependency>
 
	<dependency>
	    <groupId>org.slf4j</groupId>
	    <artifactId>jcl-over-slf4j</artifactId>
	    <version>1.7.5</version>
	</dependency>
	
	
	<dependency>
	    <groupId>org.slf4j</groupId>
	    <artifactId>slf4j-api</artifactId>
	    <version>1.7.5</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
	<dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-common</artifactId>
	    <version>2.6.0</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
	<dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-hdfs</artifactId>
	    <version>2.6.0</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
	<dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-client</artifactId>
	    <version>2.6.0</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-common -->
	<dependency>
	    <groupId>org.apache.hbase</groupId>
	    <artifactId>hbase-common</artifactId>
	    <version>1.1.2</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
	<dependency>
	    <groupId>org.apache.hbase</groupId>
	    <artifactId>hbase-client</artifactId>
	    <version>1.1.2</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-server -->
	<dependency>
	    <groupId>org.apache.hbase</groupId>
	    <artifactId>hbase-server</artifactId>
	    <version>1.1.2</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
	<dependency>
	    <groupId>org.apache.hive</groupId>
	    <artifactId>hive-jdbc</artifactId>
	    <version>1.1.0</version>
	</dependency>

 HiveConfigurationConstants

public class HiveConfigurationConstants {
	public static final String CONFIG_DRIVERNAME = "org.apache.hive.jdbc.HiveDriver";
	public static final String CONFIG_URL = "jdbc:hive2://cdh1:10000/default";
	public static final String CONFIG_USER = "root";
	public static final String CONFIG_PASSWORD = "123";
}

JDBCToHiveServer2


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

public class JDBCToHiveServer2 {

	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		// 通过反射机制获取驱动程序
		try {
			Class.forName(HiveConfigurationConstants.CONFIG_DRIVERNAME);
			// 建立连接
			Connection conn = DriverManager.getConnection(HiveConfigurationConstants.CONFIG_URL,	HiveConfigurationConstants.CONFIG_USER,HiveConfigurationConstants.CONFIG_PASSWORD);
			// 创建statement
			Statement stmt = conn.createStatement();
			// 准备SQL脚本
			String sql = "select * from stu1";
			// statement执行脚本
			ResultSet res = stmt.executeQuery(sql);
			// 处理结果集
			while (res.next()) {
				System.out.println(res.getString(1)+"@"+res.getString(2));
				}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

	}

}

 

你当前的问题属于 **普通文本型**,是你在按照《Apache Hive的安装.pdf》文档部署 Hive 过程中遇到的实际操作问题。以下是对你当前状态的完整承接与后续正确操作指引。 --- ## ✅ 当前问题总结 你已完成以下步骤: - 上传并解压 `apache-hive-3.1.2-bin.tar.gz` - 重命名为 `/export/server/hive` - 删除旧版 Guava 并复制 Hadoop 的新版 Guava(✔️ 正确) 但遇到两个问题: 1. `vim: 未找到命令` → 系统未安装 `vim`,但可用 `vi` 替代(功能基本一致) 2. `cp: 无法获取 "/path/to/..." 的文件状态` → 因为 `/path/to/...` 是占位符,你需要真实路径 --- ## ✅ 接下来应继续的操作(逐条执行) ### 1. 使用 `vi` 编辑 `hive-env.sh`(没问题,`vi` 可用) ```bash cd /export/server/hive/conf vi hive-env.sh ``` 在文件末尾添加以下内容(按 `i` 进入插入模式,粘贴后按 `Esc`,输入 `:wq` 保存退出): ```sh export HADOOP_HOME=/export/server/hadoop export HIVE_CONF_DIR=/export/server/hive/conf export HIVE_AUX_JARS_PATH=/export/server/hive/lib ``` ✅ 保存成功即可。 --- ### 2. 获取 MySQL JDBC 驱动(关键步骤) 你执行了: ```bash cp /path/to/mysql-connector-java-5.1.32.jar /export/server/hive/lib/ ``` ❌ 错误原因:`/path/to/...` 是示例路径,不是真实路径! #### ✅ 正确做法:先确认 jar 包是否存在 ```bash find / -name "mysql-connector*.jar" 2>/dev/null ``` 如果返回类似: ``` /root/mysql-connector-java-5.1.32.jar ``` 则使用该路径复制: ```bash cp /root/mysql-connector-java-5.1.32.jar /export/server/hive/lib/ ``` #### ❌ 如果找不到该文件:说明尚未上传 你需要: 1. 在本地电脑下载 `mysql-connector-java-5.1.32.jar` 2. 使用 SFTP 工具(如 Xftp、WinSCP)上传到服务器,例如 `/root/` 3. 再执行复制命令: ```bash cp /root/mysql-connector-java-5.1.32.jar /export/server/hive/lib/ ``` > ✅ 确保 `/export/server/hive/lib/` 下有这个 jar 包,否则 Hive 无法连接 MySQL --- ### 3. 创建并配置 `hive-site.xml` ```bash cd /export/server/hive/conf vi hive-site.xml ``` 输入以下内容(请根据你的环境修改): ```xml <configuration> <!-- MySQL 元数据存储 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://Master:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <!-- 远程 Metastore 地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://Master:9083</value> </property> <!-- HiveServer2 绑定 Host --> <property> <name>hive.server2.thrift.bind.host</name> <value>Master</value> </value> </property> <!-- 关闭元数据版本验证 --> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <!-- 关闭通知权限 --> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> </configuration> ``` 按 `Esc` → 输入 `:wq` 保存退出。 --- ### 4. 初始化 Hive 元数据库 ```bash cd /export/server/hive bin/schematool -initSchema -dbType mysql -verbose ``` ✅ 成功标志:输出中出现 `Schema initialized successfully` ❌ 失败常见原因: - MySQL 服务未启动 - 网络不通(Master 是否能 telnet 3306?) - 用户名密码错误 - 缺少 JDBC 驱动(回到第 2 步检查) --- ### 5. 启动 Metastore 服务(远程模式必须手动启动) ```bash nohup /export/server/hive/bin/hive --service metastore & ``` 查看日志确认是否启动成功: ```bash tail -f nohup.out ``` 看到 `Starting metastore` 且无报错即为成功。 --- ### 6. 启动 HiveServer2 服务 ```bash nohup /export/server/hive/bin/hive --service hiveserver2 & ``` 等待几十秒后,可用 `jps` 查看进程: ```bash jps ``` 应看到:`RunJar`(代表 metastore 和 hiveserver2) --- ### 7. 配置 Hadoop 代理权限(避免连接被拒) 编辑 Hadoop 配置文件: ```bash vi /export/server/hadoop/etc/hadoop/core-site.xml ``` 添加: ```xml <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> ``` 保存后无需重启 Hadoop,但需刷新配置或等待自动加载。 --- ### 8. 使用 Beeline 测试连接 ```bash /export/server/hive/bin/beeline !connect jdbc:hive2://Master:10000 ``` 输入用户名:`root`(可回车跳过) 密码:回车 ✅ 成功进入 `0: jdbc:hive2://Master:10000>` 即表示 Hive 安装成功! --- ## ✅ 知识点(不超过三项,每项 ≤50 字) 1. **Hive 元数据管理机制** Hive 将表结构等元数据存于 MySQL,HDFS 存数据,通过 Metastore 服务统一管理。 2. **远程 Metastore 模式优势** Metastore 独立进程运行,支持多客户端并发访问,适合生产环境部署。 3. **JDBC 驱动作用原理** Hive 通过 `mysql-connector-java.jar` 实现与 MySQL 的连接,必须放入 `lib` 目录。 --- 🎉 按以上步骤操作完毕后,你的 Hive 已成功部署在远程模式下,可开始使用 HQL 进行大数据分析。如需进一步配置高可用或集成 Spark,也可继续扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值