Connectez-vous à Kyuubi depuis un client en ligne de commande avec Beeline, ou depuis une application Java avec un pilote JDBC (Java Database Connectivity).
Prérequis
Avant de commencer, vérifiez que vous disposez des éléments suivants :
Un cluster DataLake avec le service Kyuubi actif dans E-MapReduce (EMR). Voir la rubrique Créer un cluster
Une session active sur le cluster DataLake. Voir la rubrique Se connecter à un cluster
Connexion avec Beeline
Les clusters EMR incluent le client Beeline pour Kyuubi kyuubi-beeline. Vous pouvez également utiliser Hive Beeline. Les exemples ci-dessous utilisent kyuubi-beeline.
Deux méthodes de connexion sont possibles : la découverte de services via ZooKeeper et la connexion directe. Nous recommandons la découverte via ZooKeeper pour garantir la haute disponibilité.
Clusters standard
ZooKeeper (recommandé)
kyuubi-beeline -n user1 \
-u "jdbc:hive2://master-1-1:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi"
| Paramètre | Description |
|---|---|
master-1-1:2181 |
Hôte et port ZooKeeper |
serviceDiscoveryMode=zooKeeper |
Active la découverte de services via ZooKeeper |
zooKeeperNamespace=kyuubi |
Chemin ZooKeeper où Kyuubi enregistre ses instances |
Connexion directe
kyuubi-beeline -n user1 -u "jdbc:hive2://master-1-1:10009/"
Pour soumettre un fichier SQL sans ouvrir de session interactive :
kyuubi-beeline -n user1 -u "jdbc:hive2://master-1-1:10009/" -f query1.sql
Clusters hautement sécurisés
Les clusters hautement sécurisés utilisent l'authentification Kerberos. Avant la connexion, exécutez kinit pour obtenir un ticket d'accès (TGT) auprès du centre de distribution de clés Kerberos (KDC). Le client Beeline utilise ce TGT pour s'authentifier auprès de Kyuubi. Pour configurer Kerberos, voir la rubrique Opérations de base sur Kerberos.
ZooKeeper (recommandé)
kyuubi-beeline -n user1 \
-u "jdbc:hive2://master-1-1:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi;principal=kyuubi/_HOST@EMR"
Connexion directe
kyuubi-beeline -n user1 -u "jdbc:hive2://master-1-1:10009/;principal=kyuubi/_HOST@EMR"
Le paramètre principal=kyuubi/_HOST@EMR indique le principal de service Kerberos du serveur Kyuubi.
Connexion avec un pilote JDBC
Pour connecter une application Java à Kyuubi, suivez ces étapes :
Ajoutez la dépendance Hive JDBC à votre projet Maven.
Construisez l'URL de connexion JDBC adaptée à votre type de cluster.
Chargez le pilote et exécutez une requête.
Étape 1 : Ajout de la dépendance Maven
Ajoutez la dépendance suivante à votre fichier pom.xml :
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.3.9</version>
</dependency>
Étape 2 : Construction de l'URL JDBC
Le format de l'URL JDBC est le suivant :
jdbc:hive2://<host>:<port>/<database>[;<properties>]
| Type de cluster | URL JDBC |
|---|---|
| Cluster standard | jdbc:hive2://master-1-1:10009/default; |
| Cluster hautement sécurisé | jdbc:hive2://master-1-1:10009/default;principal=kyuubi/_HOST@EMR |
Étape 3 : Chargement du pilote et exécution d'une requête
Tous les exemples utilisent la classe de pilote org.apache.hive.jdbc.HiveDriver.
Clusters standard
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);
// Open a connection and run a query
try (Connection conn = DriverManager.getConnection(kyuubiJdbcUrl);
Statement st = conn.createStatement();
ResultSet res = st.executeQuery("show databases")) {
while (res.next()) {
System.out.println(res.getString(1));
}
}
}
}
Clusters hautement sécurisés
Avant d'exécuter l'application, lancez kinit pour vous authentifier auprès de Kerberos.
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);
// Open a connection and run a query
try (Connection conn = DriverManager.getConnection(kyuubiJdbcUrl);
Statement st = conn.createStatement();
ResultSet res = st.executeQuery("show databases")) {
while (res.next()) {
System.out.println(res.getString(1));
}
}
}
}