Tous les produits
Search
Centre de documentation

MaxCompute:Delta Lake external tables

Dernière mise à jour :Aug 10, 2026

Les tables externes Delta Lake dans OSS vous permettent d'interroger les données au format Delta Lake directement sur place, sans les déplacer ni les convertir. Cette rubrique explique comment créer, configurer et interroger ces tables.

Important

MaxCompute prend en charge les tables externes Delta Lake uniquement avec une version figée du kit de développement logiciel (SDK) Delta Lake et ne mettra pas à jour ce SDK ni ne développera davantage cette fonctionnalité. Pour les nouvelles charges de travail de data lake, utilisez plutôt des tables externes Paimon.

Limites

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

Contrainte

Détail

Impact

Lecture seule, analyse complète

Seules les lectures complètes de toutes les données mappées à la table sont prises en charge. Le masquage automatique des colonnes système, les lectures incrémentielles, les lectures par snapshot et les opérations d'écriture ne sont pas pris en charge.

Pour les opérations ACID, utilisez les tables Delta MaxCompute ou des tables externes Paimon.

Aucune propriété cluster

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

Omettez la clause CLUSTERED BY lors de la rédaction des instructions DDL.

Limite de 2 Go par fichier

Un fichier unique ne peut pas dépasser 2 Go.

Divisez les fichiers qui dépassent cette limite avant de créer la table.

Exigence de même région

MaxCompute et le compartiment OSS doivent se trouver dans la même région.

L'accès interrégional n'est pas pris en charge et entraînera l'échec des requêtes.

Version de SDK figée

Le SDK Delta Lake intégré à MaxCompute est io.delta:delta-core_2.11:0.2.0.5. La compatibilité ascendante et descendante n'est pas garantie ; la compatibilité est maintenue par la communauté open source.

Utilisez des données Delta Lake écrites avec une version compatible du SDK.

Types de données pris en charge

Tous les types de données MaxCompute suivants sont pris en charge. Pour plus de détails sur les types, consultez Types de données (version 1.0) et Types de données (version 2.0).

Type de données

Pris en charge

Type de données

Pris en charge

TINYINT

Oui

STRING

Oui

SMALLINT

Oui

DATE

Oui

INT

Oui

DATETIME

Oui

BIGINT

Oui

TIMESTAMP

Oui

BINARY

Oui

TIMESTAMP_NTZ

Oui

FLOAT

Oui

BOOLEAN

Oui

DOUBLE

Oui

ARRAY

Oui

DECIMAL(precision,scale)

Oui

MAP

Oui

VARCHAR(n)

Oui

STRUCT

Oui

CHAR(n)

Oui

JSON

Oui

Créer 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 'io.delta.hive.DeltaInputFormat'
OUTPUTFORMAT 'io.delta.hive.DeltaOutputFormat'
LOCATION 'oss_location';

DeltaInputFormat et DeltaOutputFormat sont les classes d'entrée/sortie compatibles Hive de Delta Lake. ParquetHiveSerDe gère la sérialisation Parquet sous-jacente, car Delta Lake stocke les données au format Parquet. Vous devez spécifier ces trois éléments pour enregistrer correctement la table.

Pour plus de détails sur les paramètres, consultez Paramètres de syntaxe de base.

Interroger les données

Exemple : création et interrogation d'une table externe Delta Lake partitionnée

Cet exemple présente le flux de travail complet : chargement des données Delta Lake vers OSS, création d'une table externe partitionnée dans MaxCompute, importation des métadonnées de partition et exécution d'une requête.

Prérequis

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

Étapes

  1. Chargez les données de test. Connectez-vous à la console OSS et chargez un fichier de données de test au format Delta Lake dans le dossier oss-mc-test/Demo_delta_pt/dt=20250612/. Pour plus de détails, consultez Charger des fichiers vers OSS.

    MaxCompute crée automatiquement des dossiers OSS lorsque les instructions SQL font référence à des tables externes incluant des fonctions définies par l'utilisateur (UDF). Dans les autres cas, créez le dossier manuellement.
  2. Créez une table externe Delta Lake.

    CREATE EXTERNAL TABLE test_delta_pt (
        id INT
    )
    PARTITIONED BY (dt STRING)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
    STORED AS
    INPUTFORMAT 'io.delta.hive.DeltaInputFormat'
    OUTPUTFORMAT 'io.delta.hive.DeltaOutputFormat'
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo_delta_pt/';
  3. Importez les métadonnées de partition. Pour les tables partitionnées, exécutez MSCK REPAIR TABLE afin de détecter et d'enregistrer les partitions à partir du chemin OSS. Pour plus de détails, consultez Remplir les partitions pour une table externe OSS.

    MSCK REPAIR TABLE test_delta_pt ADD PARTITIONS;
  4. Interrogez la table.

    SELECT * FROM test_delta_pt WHERE dt='20250612';