Tous les produits
Search
Centre de documentation

MaxCompute:Hudi external tables

Dernière mise à jour :Aug 10, 2026

Cette rubrique explique comment créer, lire et écrire des données dans des tables externes OSS au format Hudi.

Important

MaxCompute prend uniquement en charge la fonctionnalité de table externe pour la version publiée du SDK Hudi. Aucune mise à jour ni amélioration fonctionnelle ne sera fournie. Utilisez les tables externes Paimon pour lire les données aux formats de table de lac de données.

Limites

Avant de créer une table externe Hudi, examinez les contraintes suivantes :

  • Les tables externes OSS ne prennent pas en charge la propriété cluster.

  • La taille maximale d'un fichier est de 2 Go. Scindez les fichiers dépassant cette limite avant de les lire.

  • MaxCompute et Object Storage Service (OSS) doivent se trouver dans la même région.

  • Les tables externes Hudi permettent uniquement la lecture intégrale des données des fichiers mappés. Les opérations suivantes ne sont pas prises en charge :

    • Masquage automatique des colonnes système

    • Lectures incrémentielles

    • Lectures instantanées (snapshot)

    • Opérations d'écriture

  • Pour les opérations nécessitant les propriétés ACID (atomicité, cohérence, isolation et durabilité), utilisez plutôt les tables Delta MaxCompute ou les tables externes Paimon.

  • La version par défaut du SDK Hudi intégrée à MaxCompute est org.apache.hudi:hudi-hadoop-mr-bundle:0.12.2-emr-1.0.6. MaxCompute ne garantit pas la compatibilité ascendante ou descendante du SDK Hudi ; cette responsabilité incombe à la communauté open source.

  • Pour les tables externes partitionnées, exécutez MSCK REPAIR TABLE <table_name> ADD PARTITIONS; après la création de la table afin d'enregistrer les partitions OSS existantes dans MaxCompute. Les requêtes sur une table partitionnée ne renvoient aucune donnée tant que cette étape n'est pas effectuée.

Types de données pris en charge

Pour la référence complète des types, consultez les sections Types de données (version 1.0) et Types de données (version 2.0).

|
**Type de données**
|
**Prise en charge**
|
**Type de données**
|
**Prise en charge**
| | --- | --- | --- | --- | |
TINYINT
|

|
STRING
|

| |
SMALLINT
|

|
DATE
|

| |
INT
|

|
DATETIME
|

| |
BIGINT
|

|
TIMESTAMP
|

| |
BINARY
|

|
TIMESTAMP_NTZ
|

| |
FLOAT
|

|
BOOLEAN
|

| |
DOUBLE
|

|
ARRAY
|

| |
DECIMAL(precision,scale)
|

|
MAP
|

| |
VARCHAR(n)
|

|
STRUCT
|

| |
CHAR(n)
|

|
JSON
|

|























































































Création d'une table externe

Syntaxe

CREATE EXTERNAL TABLE [IF NOT EXISTS] mc_oss_extable_name
(
   <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>)]
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'oss_location';

Utilisez les valeurs INPUTFORMAT, OUTPUTFORMAT et ROW FORMAT SERDE exactement comme indiqué. Pour la description des autres paramètres, consultez la section Paramètres de syntaxe de base.

Interrogation des données

Exemple

Cet exemple montre comment créer une table externe Hudi partitionnée, enregistrer ses partitions et interroger les données.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un projet MaxCompute

  • Un bucket et un dossier OSS situés dans la même région que votre projet MaxCompute. Pour créer un bucket, consultez la page Créer un bucket. Pour créer un dossier, consultez la page Gérer les dossiers. MaxCompute prend également en charge la création automatique de dossiers dans OSS.

  • Des autorisations d'accès OSS accordées à un compte Alibaba Cloud, à un utilisateur Resource Access Management (RAM) ou à un rôle RAM. Pour plus de détails, consultez la page Autoriser l'accès en mode STS pour OSS

  • L'autorisation CreateTable dans le projet MaxCompute. Pour plus de détails, consultez la page Autorisations MaxCompute

Étape 1 : Chargement des données de test

Connectez-vous à la console OSS et chargez le fichier de données de test au format Hudi dans le dossier oss-mc-test/Demo_hudi_pt/dt=20250612/. Pour plus de détails, consultez la section Charger des fichiers dans OSS.

Étape 2 : Création d'une table externe Hudi

Exécutez l'instruction suivante pour créer une table externe Hudi partitionnée mappée à l'emplacement OSS :

CREATE EXTERNAL TABLE vehicle_hudi_pt (
  _hoodie_commit_time  string,
  _hoodie_commit_seqno string,
  _hoodie_record_key string,
  _hoodie_partition_path string,
  _hoodie_file_name STRING,
  id STRING,
  name STRING
)
PARTITIONED BY (ds STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo_hudi_pt/';

Étape 3 : Enregistrement des partitions

Après avoir créé une table externe partitionnée, enregistrez ses partitions OSS dans MaxCompute. Sans cette étape, les requêtes ne renvoient aucune donnée.

MSCK REPAIR TABLE vehicle_hudi_pt ADD PARTITIONS;

Pour la syntaxe complète des partitions, consultez la section Syntaxe d'ajout de données de partition à une table externe OSS.

Étape 4 : Interrogation de la table

SELECT * FROM vehicle_hudi_pt WHERE ds='20250612';