Tous les produits
Search
Centre de documentation

E-MapReduce:Intégrer Paimon avec Spark

Dernière mise à jour :Aug 09, 2026

Paimon vous permet de mettre en place un stockage de lac de données sur HDFS ou OSS et de l'analyser avec le moteur de calcul Spark. Dans EMR, utilisez Spark SQL pour lire et écrire des données dans les tables Paimon.

Prérequis

Un cluster DataLake ou Custom EMR avec Spark et Paimon installés doit être créé. Pour plus d'informations, consultez la rubrique Créer un cluster.

Limites

  • Spark SQL permet de lire et d'écrire dans Paimon sur les clusters EMR exécutant EMR-3.46.0 ou version ultérieure, ainsi que EMR-5.12.0 ou version ultérieure.

  • Seul Spark SQL (Spark 3) peut lire et écrire des données dans Paimon via un catalogue.

Procédure

Étape 1 : Configurer un catalogue

Spark lit et écrit dans les tables Paimon via un catalogue. Deux types de catalogues sont disponibles : le catalogue Paimon et spark_catalog. Choisissez celui qui correspond à votre cas d'utilisation.

  • Catalogue Paimon : gère les métadonnées au format Paimon. Utilisez-le uniquement pour interroger et écrire dans les tables Paimon.

  • spark_catalog : catalogue intégré par défaut dans Spark. Il gère les métadonnées des tables internes de Spark SQL et permet d'interroger et d'écrire à la fois dans les tables Paimon et non-Paimon.

Catalogue Paimon

Vous pouvez stocker les métadonnées dans un système de fichiers tel que HDFS ou un service de stockage d'objets tel qu'OSS. Vous pouvez également synchroniser les métadonnées vers DLF et Hive afin de rendre Paimon accessible à d'autres services.

Le paramètre spark.sql.catalog.paimon.warehouse spécifie le chemin racine de l'entrepôt de données. Le système crée automatiquement ce chemin s'il n'existe pas. Si le chemin existe déjà, vous pouvez accéder aux tables qu'il contient.

  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. Sélectionnez un catalogue à configurer selon le type de métadonnées. Exécutez la commande correspondante pour démarrer Spark SQL.

    Catalogue de système de fichiers

    Un catalogue de système de fichiers stocke les métadonnées dans un système de fichiers ou un stockage d'objets.

    spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog \
    --conf spark.sql.catalog.paimon.metastore=filesystem \
    --conf spark.sql.catalog.paimon.warehouse=oss://<yourBucketName>/warehouse \
    --conf spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
    Remarque
    • spark.sql.catalog.paimon : définit un catalogue nommé paimon.

    • spark.sql.catalog.paimon.metastore : spécifie le type de metastore pour le catalogue. La valeur filesystem indique que les métadonnées sont stockées dans le système de fichiers.

    • spark.sql.catalog.paimon.warehouse : configure l'emplacement de l'entrepôt de données. Remplacez <yourBucketName> par le nom de votre compartiment OSS. Pour plus d'informations sur la création d'un compartiment, consultez la rubrique Créer un compartiment.

    Catalogue DLF

    Un catalogue DLF synchronise les métadonnées vers DLF.

    Important

    Lors de la création du cluster, définissez Metadata sur DLF Unified Metadata.

    spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog \
    --conf spark.sql.catalog.paimon.metastore=dlf \
    --conf spark.sql.catalog.paimon.warehouse=oss://<yourBucketName>/warehouse \
    --conf spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
    Remarque
    • spark.sql.catalog.paimon : définit un catalogue nommé paimon.

    • spark.sql.catalog.paimon.metastore : spécifie le type de metastore pour le catalogue. La valeur dlf indique que les métadonnées sont synchronisées vers Data Lake Formation (DLF).

    • spark.sql.catalog.paimon.warehouse : configure l'emplacement de l'entrepôt de données. Remplacez <yourBucketName> par le nom de votre compartiment OSS. Pour plus d'informations sur la création d'un compartiment, consultez la rubrique Créer un compartiment.

    Catalogue Hive

    Un catalogue Hive synchronise les métadonnées vers Hive Metastore. Les tables créées dans le catalogue Hive peuvent être interrogées directement depuis Hive. Pour plus d'informations sur l'interrogation de Paimon depuis Hive, consultez la rubrique Intégrer Paimon avec Hive.

    spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog \
    --conf spark.sql.catalog.paimon.metastore=hive \
    --conf spark.sql.catalog.paimon.uri=thrift://master-1-1:9083 \
    --conf spark.sql.catalog.paimon.warehouse=oss://<yourBucketName>/warehouse \
    --conf spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
    Remarque
    • spark.sql.catalog.paimon : définit un catalogue nommé paimon.

    • spark.sql.catalog.paimon.metastore : spécifie le type de metastore pour le catalogue. La valeur hive indique que les métadonnées sont synchronisées vers Hive Metastore.

    • spark.sql.catalog.paimon.uri : adresse et port du service Hive Metastore. La valeur thrift://master-1-1:9083 signifie que Spark SQL se connecte au service Hive Metastore exécuté sur l'hôte master-1-1 et écoutant sur le port 9083 pour récupérer les métadonnées.

    • spark.sql.catalog.paimon.warehouse : configure l'emplacement de l'entrepôt de données. Remplacez <yourBucketName> par le nom de votre compartiment OSS. Pour plus d'informations sur la création d'un compartiment, consultez la rubrique Créer un compartiment.

spark_catalog

  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. Exécutez la commande suivante pour configurer le catalogue et démarrer Spark SQL.

    spark-sql --conf spark.sql.catalog.spark_catalog=org.apache.paimon.spark.SparkGenericCatalog \
    --conf spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
    Remarque
    • spark.sql.catalog.spark_catalog : définit un catalogue nommé spark_catalog.

    • Le chemin racine de l'entrepôt pour spark_catalog est spécifié par le paramètre spark.sql.warehouse.dir. Dans la plupart des cas, inutile de modifier ce paramètre.

Étape 2 : Lire et écrire dans les tables Paimon

Exécutez les instructions Spark SQL suivantes pour créer une table dans le catalogue, puis lire et écrire des données dans cette table.

Catalogue Paimon

Pour accéder à une table Paimon, utilisez le format paimon.<db_name>.<tbl_name>, où <db_name> représente le nom de la base de données et <tbl_name> le nom de la table.

-- Create a database.
CREATE DATABASE IF NOT EXISTS paimon.ss_paimon_db;

-- Create a Paimon table.
CREATE TABLE paimon.ss_paimon_db.paimon_tbl (id INT, name STRING) USING paimon;

-- Write data to the Paimon table.
INSERT INTO paimon.ss_paimon_db.paimon_tbl VALUES (1, "apple"), (2, "banana"), (3, "cherry");

-- Query the write result.
SELECT * FROM paimon.ss_paimon_db.paimon_tbl ORDER BY id;

-- Drop the database.
DROP DATABASE paimon.ss_paimon_db CASCADE;
Remarque

Si vous recevez l'erreur metastore: Failed to connect to the Metastore Server lors de la création d'une base de données après avoir configuré un catalogue Hive, le service Hive Metastore n'est pas en cours d'exécution. Exécutez la commande suivante pour démarrer le service. Une fois le service démarré, exécutez à nouveau la commande de configuration du catalogue Hive.

hive --service metastore &

Si vous avez sélectionné DLF Unified Metadata lors de la création du cluster, nous vous recommandons de configurer un catalogue DLF pour synchroniser les métadonnées vers DLF.

spark_catalog

Utilisez spark_catalog.<db_name>.<tbl_name> pour accéder aux tables Paimon et non-Paimon. Étant donné que spark_catalog est le catalogue intégré par défaut dans Spark, vous pouvez omettre le nom du catalogue et accéder directement aux tables sous la forme <db_name>.<tbl_name>. Dans ces formats, <db_name> représente le nom de la base de données et <tbl_name> le nom de la table.

-- Create databases.
CREATE DATABASE IF NOT EXISTS ss_paimon_db;
CREATE DATABASE IF NOT EXISTS ss_parquet_db;

-- Create a Paimon table and a Parquet table.
CREATE TABLE ss_paimon_db.paimon_tbl (id INT, name STRING) USING paimon;
CREATE TABLE ss_parquet_db.parquet_tbl USING parquet AS SELECT 3, "cherry";

-- Write data to the Paimon table.
INSERT INTO ss_paimon_db.paimon_tbl VALUES (1, "apple"), (2, "banana");
INSERT INTO ss_paimon_db.paimon_tbl SELECT * FROM ss_parquet_db.parquet_tbl;

-- Query the write result.
SELECT * FROM ss_paimon_db.paimon_tbl ORDER BY id;

-- Drop the databases.
DROP DATABASE ss_paimon_db CASCADE;
DROP DATABASE ss_parquet_db CASCADE;

La requête renvoie le résultat suivant :

1       apple   
2       banana
3       cherry 

FAQ

Le paramètre spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions est-il configuré automatiquement lorsque vous ajoutez le service Paimon à un cluster ?

Oui. Après avoir ajouté le service Paimon à un cluster, suivez ces étapes pour afficher la configuration :

  1. Accédez à l'onglet Services du cluster cible.

  2. Affichez la configuration du service Spark.

    1. À droite du service Spark, cliquez sur Configure.

    2. Dans la zone de recherche By Name, recherchez spark.sql.extensions pour afficher la configuration.

      image

Puis-je lire et écrire des données dans Paimon en utilisant Spark Shell ?

Oui. Pour lire et écrire des données dans Paimon en utilisant Spark Shell, suivez ces étapes :

  1. Exécutez la commande suivante pour démarrer Spark Shell.

    spark-shell
  2. Dans Spark Shell, exécutez le code Scala suivant pour écrire dans une table Paimon stockée dans un répertoire spécifié et l'interroger.

    val dataset = spark.read.format("paimon").load("oss://<yourBucketName>/warehouse/test_db.db/test_tbl")
    dataset.createOrReplaceTempView("test_tbl")
    spark.sql("INSERT INTO test_tbl VALUES (4, 'apple1', 3.5), (5, 'banana1', 4.0), (6, 'cherry1', 20.5)")
    spark.sql("SELECT * FROM test_tbl").show()
    Remarque
    • paimon : valeur fixe indiquant Paimon comme format de données.

    • oss://<yourBucketName>/warehouse/test_db.db/test_tbl : chemin d'accès à la table Paimon. <yourBucketName> représente le nom de votre compartiment OSS.

Documentation connexe

Pour plus d'informations sur l'utilisation et la configuration de Paimon, consultez la documentation Apache Paimon.