Les projets externes MaxCompute sont mappés aux catalogues Data Lake Formation (DLF), ce qui permet à MaxCompute d'accéder en lecture et en écriture en temps réel aux tables au format Paimon stockées dans Object Storage Service (OSS) géré par DLF. La gestion des autorisations est déléguée à DLF, et le mappage au niveau du catalogue permet une collaboration multi-moteurs sur les métadonnées partagées du data lake.
Les projets externes Paimon_DLF sont actuellement en aperçu sur invitation.
Limites
Seules les tables au format Paimon stockées dans OSS géré par DLF sont prises en charge.
L'écriture dans les tables Dynamic Bucket n'est pas prise en charge.
L'écriture dans les tables Cross Partition n'est pas prise en charge.
Fonctionnement des autorisations
L'accès aux données Paimon_DLF depuis MaxCompute nécessite de satisfaire deux couches d'autorisation indépendantes. Configurez les deux couches ; l'absence de l'une ou l'autre entraîne des erreurs d'accès.
|
Couche |
Ce qu'elle contrôle |
Où elle est gérée |
|
Plan de contrôle |
Opérations de la console — création d'un projet externe et attachement d'un catalogue DLF |
Console RAM |
|
Plan de données |
Opérations SQL — lecture et écriture des tables Paimon, gestion des schémas et des tables dans le catalogue DLF attaché |
Console DLF |
MaxCompute transmet l'identité de l'exécuteur de la tâche actuelle à DLF lors de la lecture ou de l'écriture des données. Chaque système applique ensuite son propre périmètre d'autorisation de manière indépendante.
Configurer l'intégration
|
Étape |
Action |
Objectif |
|
1 |
Accorder des autorisations |
Autoriser l'accès aux ressources cloud, activer DLF et créer un rôle lié au service |
|
2 |
Créer une source de données externe Paimon_DLF |
Définir la connexion entre MaxCompute et DLF |
|
3 |
Créer un projet externe |
Mapper un catalogue DLF à un projet MaxCompute |
|
4 |
Interroger et écrire des données à l'aide de SQL |
Lire et écrire des tables Paimon dans OSS géré par DLF |
Étape 1 : Accorder des autorisations
Le tableau suivant indique quel type de compte effectue chaque tâche de cette étape.
|
Tâche |
Effectuée par |
|
Accorder des stratégies RAM à un utilisateur RAM |
Propriétaire du compte Alibaba Cloud |
|
Autoriser l'accès aux ressources cloud dans la console DLF |
Propriétaire du compte Alibaba Cloud |
|
Activer DLF |
Propriétaire du compte Alibaba Cloud |
|
Créer le rôle lié au service MaxCompute |
Propriétaire du compte Alibaba Cloud |
|
Accorder des autorisations de données DLF aux utilisateurs RAM |
Administrateur du data lake (console DLF) |
Accorder des stratégies RAM à un utilisateur RAM
Si vous utilisez un utilisateur Resource Access Management (RAM), attachez les stratégies suivantes. Pour obtenir des instructions, consultez Accorder des autorisations à un utilisateur RAM.
|
Stratégie |
Requise pour |
|
|
Doit être accordée par le propriétaire du compte Alibaba Cloud si l'utilisateur RAM ne la possède pas |
|
|
Création de sources de données externes et de projets externes |
|
|
Création de projets externes — accorde l'autorisation |
Autoriser l'accès aux ressources cloud et activer DLF
Connectez-vous à la console DLF et sélectionnez votre région dans le coin supérieur gauche.
À droite de Permissions to access cloud resources are granted., cliquez sur Authorize.
-
Cliquez sur Activate à droite de DLF is activated.
MaxCompute et DLF doivent se trouver dans la même région.
Créer un rôle lié au service pour MaxCompute
MaxCompute utilise le rôle lié au service AliyunServiceRoleForMaxComputeLakehouse pour accéder aux données DLF. Créez ce rôle dans la console RAM :
Connectez-vous à la console RAM.
Dans le volet de navigation de gauche, choisissez Identities > Roles.
Sur la page Roles, cliquez sur Create Role.
Dans le coin supérieur droit, cliquez sur Create Service Linked Role.
Définissez Select Service sur
AliyunServiceRoleForMaxComputeLakehouse, puis cliquez sur Create Service Linked Role. Si un message indique que le rôle existe déjà, il est déjà autorisé. Aucune autre action n'est nécessaire.
Accorder des autorisations de données DLF aux utilisateurs RAM
Les autorisations du plan de données sont gérées dans la console DLF. Connectez-vous à la console DLF et accordez des autorisations aux utilisateurs RAM qui doivent lire ou écrire des tables Paimon.
Étape 2 : Créer une source de données externe Paimon_DLF
Connectez-vous à la console MaxCompute et sélectionnez votre région.
Dans le volet de navigation de gauche, choisissez Manage Configurations > External Data Source.
Cliquez sur Create External Data Source.
-
Configurez les paramètres suivants :
Paramètre
Obligatoire
Description
External Data Source Type
Obligatoire
Sélectionnez Paimon_DLF
External Data Source Name
Obligatoire
Commence par une lettre ; lettres minuscules, traits de soulignement et chiffres uniquement ; maximum 128 caractères. Exemple :
paimon_dlfDescription
Facultatif
Description personnalisée
Region
Obligatoire
Par défaut, la région actuelle
Authentication And Authorization
Obligatoire
Par défaut, Alibaba Cloud RAM role
Service-linked Role
Obligatoire
Généré automatiquement
Endpoint
Obligatoire
Généré automatiquement. Pour la région Chine (Hangzhou) :
cn-hangzhou-intranet.dlf.aliyuncs.comForeign Server Supplemental Properties
Facultatif
Attributs supplémentaires pour la source de données externe
Cliquez sur OK.
Sur la page External Data Source, recherchez la nouvelle source de données et cliquez sur Details dans la colonne Actions pour vérifier la configuration.
Étape 3 : Créer un projet externe
Connectez-vous à la console MaxCompute et sélectionnez votre région.
Dans le volet de navigation de gauche, choisissez Manage Configurations > Projects.
Sous l'onglet External Project, cliquez sur Create Project.
-
Configurez les paramètres suivants et cliquez sur OK :
Paramètre
Obligatoire
Description
Project Type
Obligatoire
Par défaut, External Project
Region
Obligatoire
Par défaut, la région actuelle ; ne peut pas être modifiée
Project Name (Globally Unique)
Obligatoire
Commence par une lettre ; lettres, chiffres et traits de soulignement uniquement ; 3 à 28 caractères
MaxCompute Foreign Server Type
Facultatif
Par défaut, Paimon_DLF
MaxCompute Foreign Server
Facultatif
Use Existing pour sélectionner une source de données externe précédemment créée, ou Create Foreign Server pour en créer une nouvelle
MaxCompute Foreign Server Name
Obligatoire
Sélectionnez parmi les sources de données existantes, ou saisissez le nom de la nouvelle
Data Catalog
Obligatoire
Le catalogue de données DLF à attacher
Billing Method
Obligatoire
Subscription ou Pay-as-you-go
Default Quota
Obligatoire
Sélectionnez un quota existant
Description
Facultatif
Description personnalisée
Étape 4 : Interroger et écrire des données à l'aide de SQL
Sélectionnez un outil de connexion pour vous connecter au projet externe, puis utilisez les commandes SQL suivantes.
Lister les schémas
-- Enable schema syntax at the session level.
SET odps.namespace.schema=true;
SHOW schemas;
-- Sample output:
-- ID = 20250919****am4qb
-- default
-- system
-- OK
Lister les tables d'un schéma
-- Replace <schema_name> with the schema name shown in the output above.
USE schema <schema_name>;
SHOW tables;
-- Sample output:
-- ID = 20250919****am4qb
-- acs:ram::<uid>:root emp
-- OK
Créer un schéma
-- Replace <schema_name> with your schema name.
CREATE schema <schema_name>;
Créer une table et insérer des données
Lors de l'écriture de données TIMESTAMP dans une table source Paimon, les données sont tronquées en fonction de leur précision : une précision de 0 à 3 est tronquée à 3 décimales, une précision de 4 à 6 est tronquée à 6 décimales, et une précision de 7 à 9 est tronquée à 9 décimales.
Format de la commande :
-- Create a table.
CREATE TABLE [IF NOT EXISTS] <table_name>
(
<col_name> <data_type>,
...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
;
-- Insert data.
INSERT {INTO|OVERWRITE} TABLE <table_name> [PARTITION (<pt_spec>)] [(<col_name> [,<col_name> ...])]
<select_statement>
FROM <from_statement>
Exemple — créer une table et insérer des lignes :
CREATE TABLE schema_table(id int, name string);
INSERT INTO schema_table VALUES (101, 'Zhang San'), (102, 'Li Si');
-- Verify the data.
SELECT * FROM schema_table;
-- Result:
-- +------------+------------+
-- | id | name |
-- +------------+------------+
-- | 101 | Zhang San |
-- | 102 | Li Si |
-- +------------+------------+
Si vous êtes connecté en tant qu'utilisateur RAM, la création de tables et l'insertion de données nécessitent des autorisations de catalogue DLF. Consultez Gestion des autorisations de données .
Lire et écrire dans le schéma par défaut
USE schema default;
SHOW tables;
-- Sample output:
-- ID = 20250919*******yg5
-- acs:ram::<uid>:root emp
-- acs:ram::<uid>:root emp_detail
-- acs:ram::<uid>:root test_table
-- OK
-- Read data.
SELECT * FROM test_table;
-- Result:
-- +------------+------------+
-- | id | name |
-- +------------+------------+
-- | 101 | Zhang San |
-- | 102 | Li Si |
-- +------------+------------+
-- Write data and verify.
INSERT INTO test_table VALUES (103, 'Wang Wu');
SELECT * FROM test_table;
-- Result:
-- +------------+------------+
-- | id | name |
-- +------------+------------+
-- | 101 | Zhang San |
-- | 102 | Li Si |
-- | 103 | Wang Wu |
-- +------------+------------+
Dépannage
« You are not authorized to perform this action » lors de la création d'un projet externe
L'utilisateur RAM ne dispose pas des autorisations requises. Vérifiez les points suivants :
Le code d'erreur dans les détails de l'erreur est NoMCPermission.
« Forbidden: User acs:ram::\<uid\>:user/\\ doesn't have privilege LIST on DATABASE default » lors de l'exécution de SHOW TABLES
L'utilisateur RAM ne dispose pas des autorisations du plan de données sur le catalogue DLF.
Connectez-vous à la console DLF. Dans le volet de navigation de gauche, cliquez sur System And Security. Sous l'onglet Access Control, actualisez la page et vérifiez si l'utilisateur RAM apparaît.
Si l'utilisateur existe, cliquez sur Roles et accordez les autorisations requises à l'utilisateur RAM.