本文为您介绍如何使用Beeline或JDBC连接Kyuubi。使用Beeline连接Kyuubi时,您可以使用Zookeeper连接,或者直接连接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();
}
}
参考文档
文档内容是否对您有帮助?