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.
Connectez-vous au nœud maître de votre cluster via SSH. Pour plus d'informations, consultez la rubrique Se connecter à un cluster.
-
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.PaimonSparkSessionExtensionsRemarquespark.sql.catalog.paimon: définit un catalogue nommé paimon.spark.sql.catalog.paimon.metastore: spécifie le type de metastore pour le catalogue. La valeurfilesystemindique 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.
ImportantLors 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.PaimonSparkSessionExtensionsRemarquespark.sql.catalog.paimon: définit un catalogue nommé paimon.spark.sql.catalog.paimon.metastore: spécifie le type de metastore pour le catalogue. La valeurdlfindique 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.PaimonSparkSessionExtensionsRemarquespark.sql.catalog.paimon: définit un catalogue nommé paimon.spark.sql.catalog.paimon.metastore: spécifie le type de metastore pour le catalogue. La valeurhiveindique que les métadonnées sont synchronisées vers Hive Metastore.spark.sql.catalog.paimon.uri: adresse et port du service Hive Metastore. La valeurthrift://master-1-1:9083signifie que Spark SQL se connecte au service Hive Metastore exécuté sur l'hôtemaster-1-1et é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
Connectez-vous au nœud maître de votre cluster via SSH. Pour plus d'informations, consultez la rubrique Se connecter à un cluster.
-
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.PaimonSparkSessionExtensionsRemarquespark.sql.catalog.spark_catalog: définit un catalogue nommé spark_catalog.Le chemin racine de l'entrepôt pour
spark_catalogest spécifié par le paramètrespark.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;
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
Documentation connexe
Pour plus d'informations sur l'utilisation et la configuration de Paimon, consultez la documentation Apache Paimon.
