本文為您介紹如何使用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();
}
}