Tous les produits
Search
Centre de documentation

E-MapReduce:Read from and write to HMS

Dernière mise à jour :Sep 06, 2026

La connectivité réseau permet à Serverless Spark d'accéder aux sources de données, aux serveurs et aux services hébergés dans votre VPC (Virtual Private Cloud). Ce guide explique comment configurer une connexion réseau en reliant des jobs Spark SQL et JAR à un Hive Metastore (HMS) situé dans votre VPC.

Prérequis

Une source de données doit être préparée. Cet exemple utilise un cluster Data Lake créé sur la page EMR on ECS. Le cluster inclut le service Hive et ses Metadata sont stockées dans Built-in MySQL. Pour plus d'informations, consultez la rubrique Créer un cluster.

Étape 1 : Créer une connexion réseau

  1. Accédez à la page Network Connection.

    1. Connectez-vous à la console EMR.

    2. Dans le volet de navigation de gauche, sélectionnez 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 Normal Network Connection dans le volet de navigation de gauche.

  2. Sur la page Normal Network Connection, cliquez sur Create Network Connection.

  3. Dans la boîte de dialogue Create Network Connection, configurez les paramètres suivants, puis cliquez sur OK.

    Parameter

    Description

    Name

    Saisissez un nom pour la connexion.

    VPC

    Sélectionnez le même VPC que celui du cluster EMR.

    Si aucun VPC n'est disponible, cliquez sur Create VPC pour en créer un dans la console VPC. Pour plus d'informations, consultez la rubrique VPCs et vSwitches.

    Remarque

    Si votre application Serverless Spark nécessite un accès Internet, assurez-vous que la connexion réseau le permet. Par exemple, vous pouvez déployer une passerelle NAT publique dans le VPC pour autoriser l'accès Internet aux instances Serverless Spark. Pour plus d'informations, consultez la rubrique Public NAT Gateway.

    vSwitch

    Sélectionnez un vSwitch appartenant au même VPC que le cluster EMR.

    Si aucun vSwitch n'est disponible dans la zone actuelle, cliquez sur vSwitch pour en créer un dans la console VPC. Pour plus d'informations, consultez la rubrique Créer et gérer des vSwitches.

    Important

    Vous ne pouvez sélectionner des vSwitches que dans certaines zones. Pour plus d'informations, consultez la rubrique Limites d'utilisation.

    La connexion réseau est créée lorsque son Status passe à Succeeded.

Étape 2 : Ajouter une règle de groupe de sécurité

  1. Récupérez le bloc CIDR du vSwitch utilisé par la connexion réseau.

    Connectez-vous à la console VPC et accédez à la page vSwitch pour localiser le bloc CIDR du vSwitch.

  2. Ajoutez une règle de groupe de sécurité.

    1. Connectez-vous à la console EMR on ECS.

    2. Sur la page EMR on ECS, cliquez sur l'ID du cluster cible.

    3. Sur la page Basic Information, dans la section Security, cliquez sur le lien situé à côté de Cluster Security Group.

    4. Sur la page Security Group Details, dans la section Rules, cliquez sur Add Rule, configurez les paramètres suivants, puis cliquez sur OK.

      Parameter

      Description

      Protocol

      Protocole réseau autorisé. Valeur par défaut : TCP.

      Remarque

      Si votre connexion réseau utilise l'authentification Kerberos, nous vous recommandons de sélectionner UDP et d'ouvrir le port 88. Pour plus d'informations sur l'authentification Kerberos, consultez la rubrique Activer l'authentification Kerberos.

      Source

      Saisissez le bloc CIDR du vSwitch obtenu à l'étape précédente.

      Important

      Pour éviter les risques de sécurité, ne définissez pas Authorization Object sur 0.0.0.0/0.

      Destination (Current Instance)

      Port de destination à ouvrir. Par exemple, 9083.

(Facultatif) Étape 3 : Se connecter à Hive et interroger des données

Ignorez cette étape si vous disposez déjà d'une table Hive.

  1. Connectez-vous au nœud maître de votre cluster via SSH. Pour plus d'informations, consultez la rubrique Se connecter à un cluster.

  2. Démarrez la ligne de commande Hive.

    hive
  3. Créez une table.

    CREATE TABLE my_table (id INT,name STRING);
  4. Insérez des données dans la table.

    INSERT INTO my_table VALUES (1, 'John'); 
    INSERT INTO my_table VALUES (2, 'Jane');
  5. Interrogez les données.

    SELECT * FROM my_table;

(Facultatif) Étape 4 : Générer et télécharger l'artefact JAR

Pour exécuter un job JAR, vous devez d'abord préparer un artefact. Ignorez cette étape pour les jobs Spark SQL.

  1. Créez un projet Maven sur votre machine locale.

    Le projet contient les éléments suivants :

    package com.example;
    
    import org.apache.spark.sql.Dataset;
    import org.apache.spark.sql.Row;
    import org.apache.spark.sql.SparkSession;
    
    public class DataFrameExample {
        public static void main(String[] args) {
            // Create a SparkSession with Hive support enabled.
            SparkSession spark = SparkSession.builder()
                    .appName("HMSQueryExample")
                    .enableHiveSupport()
                    .getOrCreate();
    
            // Execute a query.
            Dataset<Row> result = spark.sql("SELECT * FROM default.my_table");
    
            // Print the query results.
            result.show();
    
            // Stop the SparkSession.
            spark.stop();
        }
    }

    Le fichier pom.xml contient les éléments suivants :

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>sparkDataFrame</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <spark.version>3.3.1</spark.version>
            <scala.binary.version>2.12</scala.binary.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-hive_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
        </dependencies>
    </project>
  2. Exécutez la commande mvn package pour empaqueter le projet. Cette commande génère le fichier sparkDataFrame-1.0-SNAPSHOT.jar.

  3. Sur la page EMR Serverless Spark de votre espace de travail, cliquez sur Artifacts dans le volet de navigation de gauche.

  4. Sur la page Artifacts, cliquez sur Upload File.

  5. Téléchargez le fichier sparkDataFrame-1.0-SNAPSHOT.jar depuis votre machine locale.

Étape 5 : Créer et exécuter un job

Job JAR

  1. Sur la page EMR Serverless Spark, cliquez sur Development dans le volet de navigation de gauche.

  2. Cliquez sur Create.

  3. Saisissez un nom, sélectionnez Application > JAR comme type, puis cliquez sur OK.

  4. Dans l'éditeur de jobs, configurez les paramètres suivants. Laissez les autres paramètres avec leurs valeurs par défaut. Ensuite, cliquez sur Run.

    Parameter

    Description

    Main JAR Resource

    Sélectionnez l'artefact que vous avez téléchargé à l'étape précédente. Par exemple, sparkDataFrame-1,0-SNAPSHOT.jar.

    Main Class

    Saisissez la classe principale du job. Dans cet exemple, utilisez com.example.DataFrameExample.

    Normal Network Connection

    Sélectionnez la connexion réseau que vous avez créée à l'étape 1.

    Spark Configuration

    Configurez les propriétés suivantes.

    spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083
    spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory

    Remplacez ... par l'adresse IP privée du HMS (Hive Metastore Service). Dans cet exemple, le HMS se trouve sur le nœud maître de votre cluster EMR. Vous pouvez trouver cette adresse sur la page Nodes du cluster EMR en cliquant sur l'icône image à côté du groupe de nœuds emr-master.

  5. Après avoir exécuté le job, accédez à la section Execution Records en bas de la page et cliquez sur Log Exploration dans la colonne Actions du job.

  6. Dans l'onglet Log Exploration, vous pouvez consulter les journaux du job.

Job Spark SQL

  1. Créez et démarrez une session SQL. Pour plus d'informations, consultez la rubrique Gérer les sessions SQL.

    • Normal Network Connection : Sélectionnez la connexion réseau que vous avez créée à l'étape 1.

    • Spark Configuration : Configurez les propriétés suivantes.

      spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083
      spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory

      Remplacez *.*.*.* par l'adresse IP privée du HMS (Hive Metastore Service). Dans cet exemple, le HMS se trouve sur le nœud maître de votre cluster EMR. Vous pouvez trouver cette adresse sur la page Nodes du cluster EMR en cliquant sur l'icône image à côté du groupe de nœuds emr-master.

  2. Sur la page EMR Serverless Spark, cliquez sur Development dans le volet de navigation de gauche.

  3. Dans l'onglet Development, cliquez sur l'icône image.

  4. Dans la boîte de dialogue Create, saisissez un nom tel que users_task, définissez le Type sur la valeur par défaut SparkSQL, puis cliquez sur OK.

  5. Dans le nouvel éditeur de jobs, sélectionnez le catalog, la base de données et votre session SQL en cours d'exécution. Saisissez la requête suivante et cliquez sur Run.

    SELECT * FROM default.my_table;
    Remarque

    Lors du déploiement de code SQL utilisant un Metastore externe dans un workflow, assurez-vous que vos instructions SQL spécifient les noms de table au format db.table_name et que vous sélectionnez une base de données par défaut au format catalog_id.default à partir de l'option Catalog située dans le coin supérieur droit de l'interface utilisateur.

    Les résultats de la requête s'affichent dans la section Execution Results en bas de la page.