Tous les produits
Search
Centre de documentation

E-MapReduce:Manage Kyuubi Gateways

Dernière mise à jour :Aug 10, 2026

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

  1. Accédez à la page Gateway.

    1. Connectez-vous à la console EMR.

    2. Dans le volet de navigation de gauche, choisissez EMR Serverless > Spark.

    3. Sur la page Spark, cliquez sur le nom de l'espace de travail cible.

    4. Sur la page EMR Serverless Spark, cliquez sur O&M Center > Gateway dans le volet de navigation de gauche.

  2. Sur la page Kyuubi Gateway, cliquez sur Create Kyuubi Gateway.

  3. 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

    Remarque

    De 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.

    Remarque

    Si 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.

  4. 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

  1. Sur la page Kyuubi Gateway, localisez la passerelle cible et cliquez sur Token Management dans la colonne Actions.

  2. Cliquez sur Create Token.

  3. 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.

  4. Copiez les informations du jeton.

    Important

    Aprè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-common et hive-jdbc par 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

  1. Exécutez la commande suivante pour installer les packages PyHive et Thrift.

    pip3 install pyhive thrift
  2. 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.

    1. 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.

      Remarque
      • spark.emr.serverless.kyuubi.engine.queue dé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, identifier correspond 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"}
    2. 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 identifier repré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"}
    3. 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'
    4. 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.

    Remarque

    Ce 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.

Remarque

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
  1. Démarrez Superset et accédez à son interface. Pour connaître la procédure de démarrage de Superset, reportez-vous à la documentation Superset.

  2. Dans le coin supérieur droit de la page, cliquez sur DATABASE pour accéder à la page de connexion à une base de données.

  3. Sur la page de connexion à une base de données, sélectionnez Apache Spark SQL.

  4. 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.

  5. Cliquez sur Connect pour finaliser la configuration de la connexion.

Connexion à l'aide de HUE

Remarque

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
  1. Modifiez le fichier de configuration HUE /etc/hue/hue.conf et 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.

  2. Redémarrez le service HUE.

    sudo service hue restart
  3. 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

Remarque

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).

  1. Ouvrez DataGrip et créez un nouveau projet.

  2. Dans le panneau Database Explorer situé à droite, cliquez sur l'icône + et choisissez Data Source > Other > Apache Spark.

  3. 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>

    <endpoint> correspond au point de terminaison d'accès de la passerelle Kyuubi et <token> au jeton d'accès.

  4. Cliquez sur Test Connection pour vérifier la connexion. Si le statut Succeeded s'affiche, le test de connexion a réussi.

  5. Cliquez sur OK pour enregistrer la configuration.

Configurer et se connecter à une passerelle Kyuubi haute disponibilité

  1. É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.

  2. 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.

  3. 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

    1. Cliquez sur kyuubi-hive-jdbc-1.9.2.jar pour télécharger le fichier JAR du pilote JDBC.

    2. Remplacez le fichier JAR du pilote JDBC.

      1. Sauvegardez et déplacez le fichier JAR original du pilote JDBC.

        mv /your_path/apache-kyuubi-1.9.2-bin/beeline-jars /bak_path
        Remarque

        Si 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 commande env | grep KYUUBI_HOME pour le trouver.

      2. 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
    3. 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

    1. Cliquez sur serverless-spark-kyuubi-hive-jdbc-shaded-1.9.2.jar pour télécharger le package shaded.

    2. 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
    3. Modifiez le fichier pom.xml.

      Ajoutez les dépendances suivantes au fichier pom.xml de 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>
    4. 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.

  1. Sur la page Kyuubi Gateway, cliquez sur le nom de la passerelle Kyuubi cible.

  2. 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