连接Kyuubi

本文为您介绍如何使用Beeline或JDBC连接Kyuubi。使用Beeline连接Kyuubi时,您可以使用Zookeeper连接,或者直接连接Kyuubi服务。

前提条件

  • 已创建DataLake类型的集群,并选择了Kyuubi服务,具体操作请参见创建集群

  • 已登录集群,具体请参见登录集群

使用Beeline连接Kyuubi

您可以用Hive Beeline或者Kyuubi Beeline工具(EMR集群上的工具名称为kyuubi-beeline)连接Kyuubi Server。以下示例使用Kyuubi Beeline工具连接Kyuubi。

普通集群

  • 方式一:使用Zookeeper连接Kyuubi服务(推荐)

    kyuubi-beeline -n user1 \
      -u "jdbc:hive2://master-1-1:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi"
  • 方式二:直接连接Kyuubi服务

    kyuubi-beeline -n user1 -u "jdbc:hive2://master-1-1:10009/"

    提交SQL文件示例如下。

    kyuubi-beeline -n user1 -u "jdbc:hive2://master-1-1:10009/" -f query1.sql

高安全集群

在进行连接前,请先执行kinit命令进行身份验证。有关Kerberos的更多信息,请参见Kerberos基础使用

  • 方式一:使用Zookeeper连接Kyuubi服务(推荐)

    kyuubi-beeline -n user1 \
      -u "jdbc:hive2://master-1-1:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi;principal=kyuubi/_HOST@EMR"
  • 方式二:直接连接Kyuubi服务

    kyuubi-beeline -n user1 -u "jdbc:hive2://master-1-1:10009/;principal=kyuubi/_HOST@EMR"

使用JDBC Driver连接Kyuubi

以下为您介绍Java应用如何使用Hive提供的JDBC Driver连接Kyuubi。代码示例以Maven工程为例。

Maven依赖

在Maven工程中加入如下依赖。

<dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-jdbc</artifactId>
    <version>2.3.9</version>
</dependency>

代码示例

普通集群

import java.sql.*;

public class JDBCTest {
    private static String driverName = "org.apache.hive.jdbc.HiveDriver";
    private static String kyuubiJdbcUrl = "jdbc:hive2://master-1-1:10009/default;";

    public static void main(String[] args) throws Exception {
        Class.forName(driverName);
        Connection conn = DriverManager.getConnection(kyuubiJdbcUrl);
        Statement st = conn.createStatement();
        ResultSet res = st.executeQuery("show databases");
        while (res.next()) {
            System.out.println(res.getString(1));
        }
        res.close();
        st.close();
        conn.close();
    }
}

高安全集群

import java.sql.*;

public class JDBCTest {
    private static String driverName = "org.apache.hive.jdbc.HiveDriver";
    private static String kyuubiJdbcUrl = "jdbc:hive2://master-1-1:10009/default;principal=kyuubi/_HOST@EMR";

    public static void main(String[] args) throws Exception {
        Class.forName(driverName);
        Connection conn = DriverManager.getConnection(kyuubiJdbcUrl);
        Statement st = conn.createStatement();
        ResultSet res = st.executeQuery("show databases");
        while (res.next()) {
            System.out.println(res.getString(1));
        }
        res.close();
        st.close();
        conn.close();
    }
}

参考文档