Kyuubi Gateway fournit des interfaces Java Database Connectivity (JDBC) et Open Database Connectivity (ODBC). Ces interfaces vous permettent de connecter Serverless Spark à des outils de requête SQL et d'intelligence commerciale (BI), tels que Tableau et Power BI, pour un accès et une analyse efficaces des données. La passerelle prend également en charge les applications d'entreprise grâce à sa fonctionnalité d'isolation des ressources multi-locataires.
Créer une passerelle Kyuubi
-
Accédez à la page Gateway.
Connectez-vous à la console EMR.
Dans le volet de navigation de gauche, choisissez EMR Serverless > Spark.
Sur la page Spark, cliquez sur le nom de l'espace de travail cible.
Sur la page EMR Serverless Spark, cliquez sur dans le volet de navigation de gauche.
Sur la page Kyuubi Gateway, cliquez sur Create Kyuubi Gateway.
-
Sur la page Create Kyuubi Gateway, configurez les paramètres et cliquez sur create.
Parameter
Description
Name
Le nom de la nouvelle passerelle. Le nom peut comporter jusqu'à 64 caractères et ne peut contenir que des lettres, des chiffres, des traits d'union (-), des traits de soulignement (_) et des espaces. Il doit commencer par une lettre.
Kyuubi Gateway Resources
La valeur par défaut est
2 CPU, 8 GB.Les spécifications prises en charge et leur concurrence maximale recommandée sont les suivantes :
-
1 CPU, 4 GB: 10 -
2 CPU, 8 GB: 20 -
4 CPU, 16 GB: 30 -
8 CPU, 32 GB: 45 -
16 CPU, 64 GB: 85 -
32 CPU, 128 GB: 135
RemarqueDe nombreux éléments de configuration Spark peuvent réduire la concurrence instantanée de soumission des tâches Spark.
Kyuubi Version
La version Kyuubi utilisée par la passerelle actuelle.
RemarqueSi vous utilisez DLF (anciennement DLF 2.5) dans l'onglet Catalogs, vous devez définir Kyuubi Version sur 1.9.2-0.0.1 ou une version ultérieure.
Engine Version
La version du moteur utilisée par la passerelle actuelle. Pour plus d'informations sur les numéros de version du moteur, consultez Versions du moteur.
Associated Queue
La passerelle créée sera déployée dans la file d'attente sélectionnée. Lorsque vous soumettez une tâche Spark via la passerelle, la tâche est soumise en utilisant l'identité du créateur de la passerelle.
Authentication Method
Seule l'authentification par jeton est prise en charge.
Après avoir créé une passerelle, vous devez générer un jeton d'authentification unique pour celle-ci. Ce jeton est utilisé pour la vérification de l'identité et le contrôle d'accès dans les requêtes suivantes. Pour plus d'informations sur la création d'un jeton, consultez Gestion des passerelles.
Service High Availability
Après avoir activé la haute disponibilité (HA) du service, trois serveurs Kyuubi ou plus sont déployés pour garantir la HA.
Après avoir activé cette option, vous devez également configurer les paramètres suivants :
-
Number of Kyuubi Servers : le nombre de serveurs Kyuubi.
-
Zookeeper cluster address : une passerelle Kyuubi à haute disponibilité dépend d'un cluster Zookeeper. Saisissez le point de terminaison du cluster Zookeeper. Séparez plusieurs nœuds par des virgules (,). Assurez-vous que le réseau est connecté. Par exemple,
zk1:2181,zk2:2181,zk3:2181.
Network Connection
Une connexion réseau existante pour accéder aux sources de données dans un VPC ou à des services externes. Pour plus d'informations, consultez Connectivité réseau entre EMR Serverless Spark et d'autres VPC.
Endpoint(Public)
Cette fonctionnalité est désactivée par défaut. Si vous activez cette fonctionnalité, le système accède à Kyuubi via un point de terminaison public. Sinon, Kyuubi est accessible par défaut via un point de terminaison interne de la même région.
Kyuubi Configuration
Saisissez les informations de configuration Kyuubi. Par défaut, les paramètres sont séparés par des espaces. Par exemple :
kyuubi.engine.pool.size 1.Seules les configurations Kyuubi suivantes sont prises en charge.
kyuubi.engine.pool.size kyuubi.engine.pool.size.threshold kyuubi.engine.share.level kyuubi.engine.single.spark.session kyuubi.session.engine.idle.timeout kyuubi.session.engine.initialize.timeout kyuubi.engine.security.token.max.lifetime kyuubi.session.engine.check.interval kyuubi.session.idle.timeout kyuubi.session.engine.request.timeout kyuubi.session.engine.login.timeout kyuubi.backend.engine.exec.pool.shutdown.timeout kyuubi.backend.server.exec.pool.shutdown.timeout kyuubi.backend.server.exec.pool.keepalive.time kyuubi.frontend.thrift.login.timeout kyuubi.operation.status.polling.timeout kyuubi.engine.pool.selectPolicy kyuubi.authentication kyuubi.kinit.principal kyuubi.kinit.keytab kyuubi.authentication.ldap.* kyuubi.hadoop.proxyuser.hive.hosts kyuubi.hadoop.proxyuser.hive.groups kyuubi.hadoop.proxyuser.kyuubi.hosts kyuubi.hadoop.proxyuser.kyuubi.groups kyuubi.ha.*Spark Configuration
Saisissez les informations de configuration Spark. Par défaut, les paramètres sont séparés par des espaces. Tous les paramètres sont pris en charge, à l'exception de ceux du type
spark.kubernetes.*. Par exemple :spark.sql.catalog.paimon.metastore dlf. -
Sur la page Kyuubi Gateway, recherchez la passerelle que vous avez créée et cliquez sur START dans la colonne Actions.
Gérer les jetons
Sur la page Kyuubi Gateway, localisez la passerelle cible et cliquez sur Token Management dans la colonne Actions.
Cliquez sur Create Token.
-
Dans la boîte de dialogue Create Token, configurez les paramètres et cliquez sur OK.
Parameter
Description
Name
Le nom du nouveau jeton.
Expired At
Définissez la durée de vie (TTL) du jeton. Le nombre de jours doit être supérieur ou égal à 1. Par défaut, cette fonctionnalité est activée et le jeton expire après 365 jours.
Assign Object
Remarque-
Si vous utilisez DLF (anciennement DLF 2.5) par défaut dans l'onglet Catalogs, vous devez configurer ce paramètre.
-
Assurez-vous que l'utilisateur RAM ou le rôle RAM configuré dispose des autorisations nécessaires pour accéder à DLF. Pour plus d'informations sur l'attribution des autorisations, consultez Ajouter une autorisation.
-
L'utilisateur RAM ou le rôle RAM doit être ajouté à l'espace de travail Spark avant d'apparaître dans la liste déroulante Assign Object. Pour plus d'informations, consultez Gérer les utilisateurs et les rôles.
Dans la liste déroulante, sélectionnez l'utilisateur RAM ou le rôle RAM que vous avez ajouté dans Access Control.
Spécifiez l'utilisateur RAM ou le rôle RAM auquel le jeton est attribué. Cet utilisateur ou ce rôle est utilisé pour accéder à DLF lorsque vous vous connectez à la passerelle Kyuubi pour soumettre une tâche Spark.
-
-
Copiez les informations du jeton.
ImportantAprès la création d'un jeton, vous devez copier immédiatement les informations du jeton, car vous ne pourrez plus les consulter ultérieurement. Si un jeton expire ou est perdu, vous devez créer ou réinitialiser le jeton.
Connexion à une passerelle Kyuubi
Lorsque vous vous connectez à une passerelle Kyuubi, remplacez les espaces réservés de l'URL JDBC par vos informations réelles :
<endpoint>: le endpoint que vous pouvez obtenir depuis l'onglet Overview.<port>: le numéro de port. Utilisez le port 443 pour accéder au endpoint public et le port 80 pour accéder au endpoint interne dans la même région.<token>: le token que vous avez copié depuis l'onglet Token Management.<tokenname>: le nom du token. Vous pouvez obtenir ce nom depuis l'onglet Token Management.<UserName/RoleName>: l'utilisateur RAM ou le rôle RAM que vous avez ajouté dans Access Control.
Connexion avec Beeline
Lors de la connexion à une passerelle Kyuubi, assurez-vous que la version de votre client Beeline est compatible avec la version côté serveur de Kyuubi. Si vous n'avez pas encore installé Beeline, consultez la section Getting Started - Apache Kyuubi.
Effectuez l'une des opérations suivantes selon le catalogue par défaut utilisé sur la page Catalogs.
Utiliser DLF (anciennement DLF 2.5)
beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;user=<UserName/RoleName>;httpPath=cliservice/token/<token>"
Utiliser d'autres catalogues
beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>"
Lors de la connexion avec Beeline, vous pouvez modifier les paramètres de session. Par exemple : beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>;#spark.sql.shuffle.partitions=100;spark.executor.instances=2;".
Connexion avec Java
-
Mettez à jour le fichier pom.xml.
Remplacez
hadoop-commonethive-jdbcpar les versions de dépendance appropriées.<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.9</version> </dependency> </dependencies> -
Écrivez le code Java nécessaire pour vous connecter à la passerelle Kyuubi.
Effectuez l'une des opérations suivantes selon le catalogue par défaut utilisé sur la page Catalogs.
Utiliser DLF (anciennement DLF 2.5)
import org.apache.hive.jdbc.HiveStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class Main { public static void main(String[] args) throws Exception { String url = "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>;user=<UserName/RoleName>"; Class.forName("org.apache.hive.jdbc.HiveDriver"); Connection conn = DriverManager.getConnection(url); HiveStatement stmt = (HiveStatement) conn.createStatement(); String sql = "select * from students;"; System.out.println("Running " + sql); ResultSet res = stmt.executeQuery(sql); ResultSetMetaData md = res.getMetaData(); String[] columns = new String[md.getColumnCount()]; for (int i = 0; i < columns.length; i++) { columns[i] = md.getColumnName(i + 1); } while (res.next()) { System.out.print("Row " + res.getRow() + "=["); for (int i = 0; i < columns.length; i++) { if (i != 0) { System.out.print(", "); } System.out.print(columns[i] + "='" + res.getObject(i + 1) + "'"); } System.out.println(")]"); } conn.close(); } }Utiliser d'autres catalogues
import org.apache.hive.jdbc.HiveStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class Main { public static void main(String[] args) throws Exception { String url = "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>"; Class.forName("org.apache.hive.jdbc.HiveDriver"); Connection conn = DriverManager.getConnection(url); HiveStatement stmt = (HiveStatement) conn.createStatement(); String sql = "select * from students;"; System.out.println("Running " + sql); ResultSet res = stmt.executeQuery(sql); ResultSetMetaData md = res.getMetaData(); String[] columns = new String[md.getColumnCount()]; for (int i = 0; i < columns.length; i++) { columns[i] = md.getColumnName(i + 1); } while (res.next()) { System.out.print("Row " + res.getRow() + "=["); for (int i = 0; i < columns.length; i++) { if (i != 0) { System.out.print(", "); } System.out.print(columns[i] + "='" + res.getObject(i + 1) + "'"); } System.out.println(")]"); } conn.close(); } }
Connexion avec Python
-
Exécutez la commande suivante pour installer les packages PyHive et Thrift.
pip3 install pyhive thrift -
Rédigez un script Python pour vous connecter à la passerelle Kyuubi.
L'exemple suivant présente un script Python qui se connecte à une passerelle Kyuubi et affiche la liste des bases de données.
Effectuez l'une des opérations suivantes selon le catalogue par défaut utilisé sur la page Catalogs.
Utiliser DLF (anciennement DLF 2.5)
from pyhive import hive if __name__ == '__main__': cursor = hive.connect('<endpoint>', port="<port>", scheme='http', username='<UserName/RoleName>', password='<token>').cursor() cursor.execute('show databases') print(cursor.fetchall()) cursor.close()Utiliser d'autres catalogues
from pyhive import hive if __name__ == '__main__': cursor = hive.connect('<endpoint>', port="<port>", scheme='http', username='<tokenname>', password='<token>').cursor() cursor.execute('show databases') print(cursor.fetchall()) cursor.close()
Connexion à l'aide de l'API REST
Kyuubi Gateway met à disposition des API REST compatibles avec les standards open source, permettant d'interagir avec le service Kyuubi via HTTP. Seuls les chemins d'API suivants sont pris en charge à ce jour :
/api/v1/sessions/*/api/v1/operations/*/api/v1/batches/*
Les exemples ci-dessous illustrent la procédure de connexion à un Kyuubi Gateway par le biais de l'API REST.
-
Exemple 1 : Démarrage d'une session et exécution d'une requête SQL.
-
Créez une session et spécifiez les configurations Spark.
Effectuez l'une des opérations suivantes selon le catalogue par défaut utilisé sur la page Catalogs.
Remarquespark.emr.serverless.kyuubi.engine.queuedéfinit la file d'attente utilisée par la tâche Spark lors de l'exécution. Remplacez<dev_queue>par le nom réel de la file d'attente.Remplacez
<UserName/Rolename>par le nom d'utilisateur ou de rôle effectif.<password>est un espace réservé ; vous pouvez saisir n'importe quelle valeur.
Utiliser DLF (anciennement DLF 2.5)
curl -X 'POST' \ 'http://<endpoint>:<port>/api/v1/sessions/token/<token>' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -u '<UserName/Rolename>:<password>' \ -d '{ "configs": { "set:hivevar:spark.emr.serverless.kyuubi.engine.queue": "<dev_queue>" } }'Utiliser d'autres catalogues
curl -X 'POST' \ 'http://<endpoint>:<port>/api/v1/sessions/token/<token>' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "configs": { "set:hivevar:spark.emr.serverless.kyuubi.engine.queue": "<dev_queue>" } }'Un message similaire au suivant est renvoyé. Dans cette réponse,
identifiercorrespond au handle de session Kyuubi, qui identifie une session de manière unique. Dans cette rubrique, cette valeur est désignée par<sessionHandle>.{"identifier":"619e6ded-xxxx-xxxx-xxxx-c2a43f6fac46","kyuubiInstance":"0.0.0.0:10099"} -
Créez une instruction.
Utiliser DLF (anciennement DLF 2.5)
curl -X 'POST' \ 'http://<endpoint>:<port>/api/v1/sessions/<sessionHandle>/operations/statement/token/<token>' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -u '<UserName/RoleName>:<password>' \ -d '{ "statement": "select * from test;", "runAsync": true, "queryTimeout": 0, "confOverlay": { "additionalProp1": "string", "additionalProp2": "string" } }'Utiliser d'autres catalogues
curl -X 'POST' \ 'http://<endpoint>:<port>/api/v1/sessions/<sessionHandle>/operations/statement/token/<token>' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "statement": "select * from test;", "runAsync": true, "queryTimeout": 0, "confOverlay": { "additionalProp1": "string", "additionalProp2": "string" } }'La réponse ressemble à celle ci-dessous. Le champ
identifierreprésente le handle d'opération Kyuubi, identifiant de façon unique une opération spécifique. Nous utiliserons<operationHandle>pour désigner cette valeur dans la suite de cette rubrique.{"identifier":"a743e8ff-xxxx-xxxx-xxxx-a66fec66cfa4"} -
Récupérez le statut de l'instruction.
Utiliser DLF (anciennement DLF 2.5)
curl --location -X 'GET' \ 'http://<endpoint>:<port>/api/v1/operations/<operationHandle>/event/token/<token>' \ -H 'accept: application/json' \ -u '<UserName/RoleName>:<password>'Utiliser d'autres catalogues
curl --location -X 'GET' \ 'http://<endpoint>:<port>/api/v1/operations/<operationHandle>/event/token/<token>' \ -H 'accept: application/json' -
Récupérez le résultat de l'instruction.
Utiliser DLF (anciennement DLF 2.5)
curl --location -X 'GET' \ 'http://<endpoint>:<port>/api/v1/operations/<operationHandle>/rowset/token/<token>/?maxrows=100&fetchorientation=FETCH_NEXT' \ -H 'accept: application/json' \ -u '<UserName/RoleName>:<password>'Utiliser d'autres catalogues
curl --location -X 'GET' \ 'http://<endpoint>:<port>/api/v1/operations/<operationHandle>/rowset/token/<token>/?maxrows=100&fetchorientation=FETCH_NEXT' \ -H 'accept: application/json'
-
-
Exemple 2 : Soumission d'un job par lot via l'API batches.
Soumettez un job de traitement par lot Spark au Kyuubi Gateway en utilisant l'API REST. Le Kyuubi Gateway lance alors une application Spark et exécute la tâche spécifiée en fonction des paramètres fournis dans la requête.
Pour cet exemple, outre le remplacement des informations telles que
<endpoint>,<port>et<token>, vous devez également cliquer sur spark-examples_2.12-3.3.1.jar afin de télécharger le package JAR de test.RemarqueCe package JAR constitue un exemple simple fourni avec Spark, servant à calculer la valeur de Pi (π).
Utiliser DLF (anciennement DLF 2.5)
curl --location \ --request POST 'http://<endpoint>:<port>/api/v1/batches/token/<token>' \ --user '<UserName/RoleName>:<password>' \ --form 'batchRequest="{ \"batchType\": \"SPARK\", \"className\": \"org.apache.spark.examples.SparkPi\", \"name\": \"kyuubi-spark-pi\", \"resource\": \"oss://bucket/path/to/spark-examples_2.12-3.3.1.jar\" }";type=application/json'Utiliser d'autres catalogues
curl --location \ --request POST 'http://<endpoint>:<port>/api/v1/batches/token/<token>' \ --form 'batchRequest="{ \"batchType\": \"SPARK\", \"className\": \"org.apache.spark.examples.SparkPi\", \"name\": \"kyuubi-spark-pi\", \"resource\": \"oss://bucket/path/to/spark-examples_2.12-3.3.1.jar\" }";type=application/json'
Connexion à l'aide d'Apache Superset
Apache Superset est une plateforme moderne d'exploration et de visualisation de données, offrant une grande variété de graphiques. Pour plus d'informations sur Superset, consultez la documentation Superset.
Avant de connecter Superset à un Kyuubi Gateway, assurez-vous d'avoir installé Thrift version 0.20.0 ou ultérieure. Si ce n'est pas le cas, exécutez la commande suivante pour l'installer :
pip install thrift==0.20.0
Démarrez Superset et accédez à son interface. Pour connaître la procédure de démarrage de Superset, reportez-vous à la documentation Superset.
Dans le coin supérieur droit de la page, cliquez sur DATABASE pour accéder à la page de connexion à une base de données.
Sur la page de connexion à une base de données, sélectionnez Apache Spark SQL.
-
Dans le champ SQLAlchemy URI, saisissez la chaîne de connexion correspondant à votre méthode d'accès.
Accès via le réseau public
hive+https://<username>:<token>@<endpoint>:443/<db_name>Accès via le réseau VPC
hive+http://<username>:<token>@<endpoint>:80/<db_name>Le tableau suivant décrit les paramètres.
Paramètre
Description
username
Nom d'utilisateur. Vous pouvez saisir n'importe quelle valeur.
Token
Jeton d'accès.
Endpoint
Point de terminaison d'accès du Kyuubi Gateway. Veillez à distinguer le point de terminaison public du point de terminaison interne.
db_name
Nom de la base de données.
Cliquez sur Connect pour finaliser la configuration de la connexion.
Connexion à l'aide de HUE
Avant de connecter HUE à un Kyuubi Gateway, assurez-vous d'avoir installé Thrift version 0.20.0. Si ce n'est pas le cas, exécutez la commande suivante pour l'installer :
pip install thrift==0.20.0
-
Modifiez le fichier de configuration HUE
/etc/hue/hue.confet ajoutez la configuration correspondant à votre méthode d'accès.Accès via le réseau public
[[[sparksql]]] name = Spark Sql interface=sqlalchemy options='{"url": "hive+https://<username>:<token>@<endpoint>:443/"}'Accès via le réseau VPC
[[[sparksql]]] name = Spark Sql interface=sqlalchemy options='{"url": "hive+http://<username>:<token>@<endpoint>:80/"}'Le tableau suivant détaille les paramètres.
Paramètre
Description
username
Nom d'utilisateur. Vous pouvez saisir n'importe quelle valeur.
Token
Jeton d'accès.
Endpoint
Point de terminaison d'accès du Kyuubi Gateway.
-
Redémarrez le service HUE.
sudo service hue restart Connectez-vous à l'interface web HUE. Dans le volet de navigation de gauche, choisissez Query > Editor > SparkSql pour vérifier la connexion.
Se connecter à l'aide de DataGrip
Avant de vous connecter à une passerelle Kyuubi via DataGrip, assurez-vous d'avoir téléchargé le pilote JDBC Apache Spark (version 1.2.2, pour la compatibilité avec Spark 3.x).
Ouvrez DataGrip et créez un nouveau projet.
Dans le panneau Database Explorer situé à droite, cliquez sur l'icône + et choisissez Data Source > Other > Apache Spark.
-
Dans la boîte de dialogue Data Sources and Drivers, configurez les paramètres suivants.
Paramètre
Description
Name
Nom de connexion personnalisé.
Authentication
Sélectionnez No auth ou User & Password. Vous pouvez saisir n'importe quel nom d'utilisateur.
Driver
Sélectionnez Apache Spark ver. 1.2.2.
URL
Accès au réseau public
jdbc:hive2://<endpoint>:443/;transportMode=http;httpPath=cliservice/token/<token>Accès au réseau VPC
jdbc:hive2://<endpoint>:80/;transportMode=http;httpPath=cliservice/token/<token>Où
<endpoint>correspond au point de terminaison d'accès de la passerelle Kyuubi et<token>au jeton d'accès. Cliquez sur Test Connection pour vérifier la connexion. Si le statut Succeeded s'affiche, le test de connexion a réussi.
Cliquez sur OK pour enregistrer la configuration.
Configurer et se connecter à une passerelle Kyuubi haute disponibilité
-
Établissez une connexion réseau.
Pour établir une connexion réseau, consultez la rubrique Établir la connectivité réseau entre EMR Serverless Spark et d'autres VPC. Assurez-vous que votre client peut accéder au cluster Zookeeper du VPC cible. Par exemple, vous pouvez utiliser le composant Zookeeper d'Alibaba Cloud MSE ou d'EMR sur ECS.
-
Activez la haute disponibilité pour la passerelle Kyuubi.
Lors de la création ou de la modification d'une passerelle Kyuubi, activez l'option Service High Availability, configurez les paramètres associés et sélectionnez la connexion réseau établie pour l'option Network Connection.
-
Connectez-vous à la passerelle Kyuubi haute disponibilité.
Une fois les configurations précédentes effectuées, la passerelle Kyuubi atteint la haute disponibilité grâce à Zookeeper. Vous pouvez vérifier sa disponibilité à l'aide d'une API REST ou d'une connexion JDBC.
Lorsque vous vous connectez à une passerelle Kyuubi, remplacez les espaces réservés dans l'URL JDBC par vos informations réelles :
<endpoint>: le point de terminaison que vous pouvez obtenir depuis l'onglet Overview.<port>: le numéro de port. Utilisez le port 443 pour l'accès au point de terminaison public et le port 80 pour l'accès au point de terminaison interne dans la même région.<token>: le jeton copié depuis l'onglet Token Management.<tokenname>: le nom du jeton. Vous pouvez obtenir ce nom depuis l'onglet Token Management.<UserName/RoleName>: l'utilisateur RAM ou le rôle RAM ajouté dans la section Access Control.
Les exemples suivants illustrent la procédure de connexion à une passerelle Kyuubi haute disponibilité.
Connexion à l'aide de Beeline
Cliquez sur kyuubi-hive-jdbc-1.9.2.jar pour télécharger le fichier JAR du pilote JDBC.
-
Remplacez le fichier JAR du pilote JDBC.
-
Sauvegardez et déplacez le fichier JAR original du pilote JDBC.
mv /your_path/apache-kyuubi-1.9.2-bin/beeline-jars /bak_pathRemarqueSi vous utilisez EMR sur ECS, le chemin par défaut pour Kyuubi est
/opt/apps/KYUUBI/kyuubi-1.9.2-1.0.0/beeline-jars. Si vous ne connaissez pas le chemin d'installation de Kyuubi, vous pouvez exécuter la commandeenv | grep KYUUBI_HOMEpour le trouver. -
Remplacez-le par le nouveau fichier JAR du pilote JDBC.
cp /download/serverless-spark-kyuubi-hive-jdbc-1.9.2.jar /your_path/apache-kyuubi-1.9.2-bin/beeline-jars
-
-
Connectez-vous à l'aide de Beeline.
/your_path/apache-kyuubi-1.9.2-bin/bin/beeline -u 'jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>'
Connexion à l'aide de Java
Cliquez sur serverless-spark-kyuubi-hive-jdbc-shaded-1.9.2.jar pour télécharger le package shaded.
-
Installez le pilote JDBC dans le dépôt Maven.
Exécutez la commande suivante pour installer le pilote JDBC fourni par Serverless Spark dans votre dépôt Maven local.
mvn install:install-file \ -Dfile=/download/serverless-spark-kyuubi-hive-jdbc-shaded-1.9.2.jar \ -DgroupId=org.apache.kyuubi \ -DartifactId=kyuubi-hive-jdbc-shaded \ -Dversion=1.9.2-ss \ -Dpackaging=jar -
Modifiez le fichier
pom.xml.Ajoutez les dépendances suivantes au fichier
pom.xmlde votre projet.<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.kyuubi</groupId> <artifactId>kyuubi-hive-jdbc-shaded</artifactId> <version>1.9.2-ss</version> </dependency> </dependencies> -
Rédigez l'exemple de code Java.
import org.apache.kyuubi.jdbc.hive.KyuubiStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class Main { public static void main(String[] args) throws Exception { String url = "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>"; Class.forName("org.apache.kyuubi.jdbc.KyuubiHiveDriver"); Connection conn = DriverManager.getConnection(url); KyuubiStatement stmt = (KyuubiStatement) conn.createStatement(); String sql = "select * from test;"; ResultSet res = stmt.executeQuery(sql); ResultSetMetaData md = res.getMetaData(); String[] columns = new String[md.getColumnCount()]; for (int i = 0; i < columns.length; i++) { columns[i] = md.getColumnName(i + 1); } while (res.next()) { System.out.print("Row " + res.getRow() + "=["); for (int i = 0; i < columns.length; i++) { if (i != 0) { System.out.print(", "); } System.out.print(columns[i] + "='" + res.getObject(i + 1) + "'"); } System.out.println(")]"); } conn.close(); } }
Afficher la liste des tâches Spark soumises par Kyuubi
Vous pouvez afficher les détails des tâches Spark soumises via Kyuubi dans l'onglet Kyuubi Application de la page Job History. Ces détails incluent l'ID, le Name, l'Application Status et la date de début indiquée dans la colonne Started At. Ces informations vous aident à comprendre et gérer rapidement les tâches Spark soumises par Kyuubi.
Sur la page Kyuubi Gateway, cliquez sur le nom de la passerelle Kyuubi cible.
-
Dans le coin supérieur droit, cliquez sur Applications.
La page affiche le nom de l'application, son statut, l'heure de début, la durée, l'heure de fin et la file d'attente des ressources. La colonne Actions propose les liens Stop, Details et Spark UI.
Sur cette page, vous pouvez consulter les détails de toutes les tâches Spark soumises via cette instance Kyuubi. L'ID (spark-xxxx) est généré par le moteur Spark et correspond à l'ID d'application affiché lors de la connexion au client Kyuubi. Il identifie de manière unique une instance de tâche.
Voici les informations sur l'application Spark affichées par le client Kyuubi Beeline après l'exécution de la commande
show tables. L'ID d'application correspond à l'ID indiqué ci-dessous :Beeline version 1.9.2 by Apache Kyuubi 0: jdbc:hive2://emr-spark-kyuubi-gateway-cn-s> show tables; 2025-03-12 15:54:52.110 INFO KyuubiSessionManager-exec-pool: Thread-13802 org.apache.kyuubi.operation.ExecuteStatemen -> RUNNING_STATE, statement: show tables 2025-03-12 15:54:52 INFO [SparkSQLSessionManager-exec-pool: Thread-93] ExecuteStatement:64 - Processing anonymous's t: show tables 2025-03-12 15:54:52 INFO [SparkSQLSessionManager-exec-pool: Thread-93] ExecuteStatement:64 - Spark application name: kyuubi_USER_SPARK_SQL_anonymous_default_1750bae2-axxx application ID: spark-1c2d1a31xxx application web UI: http://21.13xxx master: k8s://https://kubernetes.default:6443 deploy mode: cluster version: 3.5.2-emr Start time: 2025-03-12T15:53:54.727 User: anonymous