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