MaxCompute vous permet de créer des tables externes Paimon pour accéder aux répertoires de tables Paimon stockés dans OSS. Cette rubrique explique comment créer et interroger ces tables avec MaxCompute.
Contexte
Apache Paimon est un format de stockage de data lake unifié pour les flux de données en continu et par lots, offrant des écritures à haut débit et des requêtes à faible latence. Paimon s'intègre parfaitement aux moteurs de calcul courants tels que Spark, Hive et Trino, utilisés dans des services tels que Realtime Compute for Apache Flink et E-MapReduce. Avec Paimon, vous pouvez construire un data lake sur OSS et le connecter à MaxCompute pour l'analytique. Pour plus d'informations, consultez la documentation officielle d'Apache Paimon.
Prérequis
Vous disposez des autorisations nécessaires pour créer des tables MaxCompute (CreateTable). Pour plus d'informations, consultez la section Autorisations MaxCompute.
Un projet MaxCompute a été créé. Pour obtenir des instructions, consultez la rubrique Créer un projet.
-
Un bucket OSS et un répertoire au sein de ce bucket ont été créés. Pour obtenir des instructions, consultez la rubrique Créer un bucket.
RemarqueAfin d'éviter tout problème de connectivité, créez le bucket dans la même région que votre projet MaxCompute.
Le service Realtime Compute for Apache Flink est activé. Pour obtenir des instructions, consultez la rubrique Activer Realtime Compute for Apache Flink.
Limites
MaxCompute prend uniquement en charge la lecture depuis des tables externes Paimon. L'écriture dans ces tables et la détection automatique des modifications de schéma dans la table source ne sont pas prises en charge.
Paimon ne prend pas en charge les projets MaxCompute pour lesquels la fonctionnalité de schéma est activée.
Les tables externes Paimon ne prennent pas en charge l'attribut de clustering.
Les tables externes Paimon ne prennent pas en charge certaines fonctionnalités, telles que l'interrogation des versions historiques des données.
Syntaxe des tables externes Paimon
Utilisez la syntaxe suivante pour créer une table externe Paimon dans MaxCompute :
CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name>
(
<col_name> <data_type>,
...
)
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH SERDEPROPERTIES (
'odps.properties.rolearn'='acs:ram::xxxxxxxxxxxxx:role/aliyunodpsdefaultrole'
)
LOCATION '<oss_location>'
USING 'paimon_maxcompute_connector.jar';
Si vous créez une table partitionnée, vous devez exécuter une commande supplémentaire pour charger les données de partition. Pour plus d'informations, consultez la section relative aux tables externes ORC.
-
Méthode 1 (recommandée) : Analysez automatiquement la structure du répertoire OSS pour identifier et ajouter les partitions à la table externe.
MSCK REPAIR TABLE <mc_oss_extable_name> ADD PARTITIONS; -
Méthode 2 : Exécutez manuellement la commande suivante pour ajouter une partition.
ALTER TABLE <mc_oss_extable_name> ADD PARTITION (<col_name>= <col_value>);
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
mc_oss_extable_name |
Oui |
Nom de la table externe Paimon à créer. Les noms de tables ne sont pas sensibles à la casse. Vous n'avez pas besoin de tenir compte de la casse lors de l'interrogation de la table externe. |
|
col_name |
Oui |
Nom d'une colonne dans la table externe Paimon. Lors de la lecture des données depuis Paimon, le schéma de la table externe doit correspondre au schéma des fichiers de données Paimon. Dans le cas contraire, l'opération de lecture échoue. |
|
data_type |
Oui |
Type de données d'une colonne dans la table externe Paimon. Lors de la lecture des données depuis Paimon, le type de données de chaque colonne de la table externe doit correspondre au type de données de la colonne correspondante dans les fichiers de données Paimon. Dans le cas contraire, l'opération de lecture échoue. |
|
odps.properties.rolearn |
Oui |
Alibaba Cloud Resource Name (ARN) d'un rôle RAM disposant des autorisations d'accès à OSS. Vous pouvez obtenir l'ARN depuis la page détails du rôle dans la console RAM. |
|
oss_location |
Oui |
Chemin d'accès aux fichiers de données OSS. Le format est
|
Procédure
Étape 1 : Préparer les données dans Flink
Créez un catalogue Paimon et une table Paimon, puis insérez des données dans la table. Si vous disposez déjà d'une table Paimon contenant des données dans Realtime Compute for Apache Flink, vous pouvez ignorer cette étape.
Connectez-vous à la console Realtime Compute for Apache Flink et créez un catalogue Paimon. Pour plus de détails, consultez la section Créer un catalogue Paimon.
-
Créez une table Paimon. Pour plus de détails, consultez la section Gérer les tables Paimon.
Sur la page Metadata Management, accédez au catalogue Paimon que vous avez créé, sélectionnez la base de données default et cliquez sur Create Table.
-
Dans la boîte de dialogue Add Table, sélectionnez le connecteur Apache Paimon, saisissez l'instruction suivante, puis cliquez sur OK. Cet exemple crée une table nommée test_tbl.
CREATE TABLE `catalogname`.`default`.test_tbl ( dt STRING, id BIGINT, data STRING, PRIMARY KEY (dt, id) NOT ENFORCED ) PARTITIONED BY (dt); -
Sur la page SQL Editor, créez, déployez et exécutez une tâche SQL contenant l'instruction suivante. Pour plus d'informations sur la création et l'exécution d'une tâche SQL, consultez la rubrique Vue d'ensemble du développement de tâches.
INSERT INTO `catalogname`.`default`.test_tbl VALUES ('2023-04-21', 1, 'AAA'), ('2023-04-21', 2, 'BBB'), ('2023-04-22', 1, 'CCC'), ('2023-04-22', 2, 'DDD');RemarqueAssurez-vous que la version du moteur pour la tâche SQL est vvr-8.0.1-flink-1.17 ou ultérieure.
Si votre tâche SQL subit une rétropression (par exemple, lors de l'exécution d'instructions
INSERT INTO ... VALUES ...), accédez à la page Job O&M, modifiez les Execution Parameters, et dans la section Other Configurations, définissezexecution.checkpointing.checkpoints-after-tasks-finish.enabled: true. Pour plus de détails sur la configuration des paramètres d'exécution d'une tâche, consultez la rubrique Configurer les informations de déploiement des tâches.
Étape 2 : Télécharger le connecteur Paimon
Utilisez l'une des méthodes suivantes pour télécharger le connecteur Paimon vers votre projet MaxCompute.
Client MaxCompute
Utiliser le client (odpscmd) pour accéder au projet MaxCompute et exécutez le code suivant afin de télécharger paimon_maxcompute_connector.jar vers le projet.
ADD JAR <path_to_paimon_maxcompute_connector.jar>;
DataWorks
Connectez-vous à la console DataWorks. Dans le volet de navigation de gauche, cliquez sur Workspaces. Recherchez l'espace de travail cible et cliquez sur Go to DataStudio dans la colonne Actions.
Sur la page Data Development, cliquez sur l'icône Create et sélectionnez Resource > JAR.
-
Dans la boîte de dialogue Create Resource, configurez les paramètres de la nouvelle ressource, téléchargez
paimon_maxcompute_connector.jaret cliquez sur Create. Pour plus d'informations, consultez la section Étape 1 : Créer ou télécharger une ressource.Définissez Resource Type sur JAR et sélectionnez Upload as ODPS resource.
Une fois la ressource créée, cliquez sur l'icône
dans la barre d'outils pour soumettre la ressource au serveur.
Étape 3 : Créer une table externe Paimon
Se connecter à l'aide du client local (odpscmd) ou utilisez un autre outil capable d'exécuter du SQL MaxCompute pour créer une table externe Paimon MaxCompute. Cette rubrique utilise oss_extable_paimon_1pt à titre d'exemple.
CREATE EXTERNAL TABLE oss_extable_paimon_1pt
(
id BIGINT,
data STRING
)
PARTITIONED BY (dt STRING)
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH SERDEPROPERTIES (
'odps.properties.rolearn'='acs:ram::124*********:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/paimon_flink/test_db_y.db/test_tbl/'
USING 'paimon_maxcompute_connector.jar'
;
Étape 4 : Lire la table externe Paimon
-
Connectez-vous à l'aide du client MaxCompute (odpscmd) ou d'un autre outil capable d'exécuter du SQL MaxCompute, puis exécutez les commandes suivantes :
SET odps.sql.common.table.planner.ext.hive.bridge = true; SET odps.sql.hive.compatible = true; -
Exécutez la commande suivante pour interroger la table externe Paimon MaxCompute
oss_extable_paimon_1pt.SELECT * FROM oss_extable_paimon_1pt;Le résultat suivant est renvoyé :
+------------+------------+------------+ | id | data | dt | +------------+------------+------------+ | 1 | AAA | 2023-04-21 | | 2 | BBB | 2023-04-21 | +------------+------------+------------+RemarqueSi les partitions ne s'affichent pas dans le résultat, exécutez la commande suivante pour les ajouter :
MSCK REPAIR TABLE oss_extable_paimon_1pt ADD PARTITIONS;
Documentation connexe
Vous pouvez également créer une table externe Paimon MaxCompute en tant que catalogue personnalisé dans Realtime Compute for Apache Flink. Cela vous permet d'interroger et de consommer les données Paimon avec MaxCompute après leur écriture. Pour plus d'informations, consultez la rubrique Créer une table externe Paimon à l'aide de Realtime Compute for Apache Flink.