通过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实现的数据类型:


《Spark原理深入与编程实战》