通过Java API访问Hive
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
HiveServer2也有一个JDBC驱动程序。它支持对HiveServer2的嵌入式和远程访问。
Hive的JDBC连接可以使用命令行(Beeline连接)方式和Java API两种方式。Java API对Hive的操作大部分都是生产中应用。
通过Java API访问Hive
下面我们演示使用Java API连接Hive流程。请按以下步骤操作。
1) 启动hiveserver2服务
$ hive --service hiveserver2 &
2) 创建Maven项目,在pom.xml中添加依赖。
3) 代码实现:连接Hive,并创建数据库。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; public class JDBCToHiveUtils { public static void main(String[] args) throws SQLException, ClassNotFoundException { //加载HiveServer2 JDBC驱动程序 Class.forName("org.apache.hive.jdbc.HiveDriver"); //通过Connection使用JDBC驱动程序创建对象来连接到数据库 String url = "jdbc:hive2://localhost:10000/default"; Connection con = DriverManager.getConnection(url, "root", "123456"); //通过创建Statement对象并使用其createStatement()方法提交SQL Statement stmt = con.createStatement(); //使用execute方法创建数据库db_hive boolean execute = stmt.execute("create database if not exists db_hive"); System.out.println("Database userdb created successfully."); //关闭连接 con.close(); } }
基本上,连接上Hive以后,我们就像使用JDBC API访问普通数据库一样访问Hive数据即可,包括各类CRUD操作。
JDBC数据类型
JDBC驱动程序会将Java的数据类型转换为对应的JDBC类型,然后将其发送到数据库。它为大多数数据类型提供并使用默认映射。
下表列出了为HiveServer2 JDBC实现的数据类型: