Hive JDBC
Hive是一个基于Hadoop的数据仓库架构,使用SQL语句读、写和管理大型分布式数据集。Hive可以将SQL语句转化为MapReduce(或Apache Spark和Apache Tez)任务执行,大大降低了Hadoop的使用门槛,减少了开发MapReduce程序的时间成本。
可以将Hive理解为一个客户端工具,其提供了一种类SQL查询语言,称为HiveQL。这使得Hive十分适合数据仓库的统计分析,能够轻松使用HiveQL开启数据仓库任务,如提取/转换/加载(ETL)、分析报告和数据分析。Hive不仅可以分析HDFS文件系统中的数据也可以分析其他存储系统,例如HBase。
通过编写JDBC程序访问Hive中的数据
1. 修改用户权限
使用JDBC或Beeline CLI连接Hive都需要在Hadoop中为Hive开通代理用户访问权限。修改Hadoop配置文件core-site.xml,添加以下配置内容:
<property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property>
2. 启动HiveServer 2服务
使用JDBC或Beeline CLI访问Hive都需要先启动HiveServer 2服务,命令如下:
cd /opt/modules/apache-hive-2.3.9-bin
bin/hive --service hiveserver2 &
http://centos01:10002
3. Java项目依赖包
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.9</version> </dependency>
4. 编写JDBC程序
Hive JDBC程序的编写与其他数据库(MySQL、Oracle等)类似
public class HiveJDBCTest {
public static void main(String[] args) throws Exception {
//驱动名称
String driver = "org.apache.hive.jdbc.HiveDriver";
//连接地址,默认使用端口10000, 使用默认数据库
String url = "jdbc:hive2://centos01:10000/test_db";
//用户名(Hadoop集群的登录用户)
String username = "root";
//密码(默认为空)
String password = "";
//1.加载JDBC驱动
Class.forName(driver);
//2.获取连接
Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
//3.执行查询
ResultSet res = stmt.executeQuery("select * from student");
//4.处理结果
while (res.next()) {
System.out.println(res.getInt(1) + "\t" + res.getString(2));
}
//5.关闭资源
res.close();
stmt.close();
conn.close();
}
}
书籍: Hadoop大数据技术开发实战 9.13 Hive JDBC操作
https://gitee.com/caoyeoo0/xc-springboot/blob/hadoopApi/src/main/java/com/xc/xcspringboot/test/HiveJDBCTest.java

浙公网安备 33010602011771号