全部产品
Search
文档中心

MaxCompute:Tabel eksternal Delta Lake

更新时间:Jan 01, 2026

Topik ini menjelaskan cara membuat, membaca dari, dan menulis ke tabel eksternal OSS dalam format Delta Lake.

Penting

MaxCompute hanya mendukung fitur tabel eksternal dengan versi tertentu dari kit pengembangan perangkat lunak (SDK) Delta Lake. MaxCompute tidak akan memperbarui versi SDK atau mengembangkan lebih lanjut fitur ini. Gunakan tabel eksternal Paimon untuk membaca data dalam format tabel data lake.

Lingkup

  • Tabel eksternal OSS tidak mendukung properti cluster.

  • Satu file tidak boleh melebihi 2 GB. Jika ukuran file terlalu besar, lakukan pemisahan.

  • MaxCompute dan OSS harus berada di wilayah yang sama.

  • Tabel eksternal Delta Lake hanya mendukung pembacaan seluruh data dari file yang dipetakan ke tabel eksternal tersebut. Fitur ini tidak mendukung penyembunyian otomatis kolom sistem, pembacaan inkremental, pembacaan snapshot, atau operasi tulis. Untuk melakukan operasi baca dan tulis yang mendukung atomicity, consistency, isolation, dan durability (ACID), gunakan fitur seperti tabel Delta MaxCompute atau tabel eksternal Paimon.

  • Versi SDK Delta Lake default yang terintegrasi ke dalam MaxCompute adalah io.delta:delta-core_2.11:0.2.0.5. Kompatibilitas maju atau mundur untuk SDK Delta Lake tidak dijamin. Kompatibilitas dipertahankan oleh komunitas open source.

Tipe data yang didukung

Untuk informasi lebih lanjut tentang tipe data MaxCompute, lihat Tipe data (versi 1.0) dan Tipe data (versi 2.0).

Tipe data

Didukung

Tipe data

Dukungan

TINYINT

Enabled

STRING

Enabled

SMALLINT

Enabled

DATE

Activated

INT

Activated

DATETIME

Not enabled

BIGINT

Enabled

TIMESTAMP

Enabled

BINARY

Activated

TIMESTAMP_NTZ

Not enabled

FLOAT

Enabled

BOOLEAN

Activated

DOUBLE

Enabled

ARRAY

Enabled

DECIMAL(precision,scale)

Not enabled

MAP

Enabled

VARCHAR(n)

Enabled

STRUCT

Activated

CHAR(n)

Activated

JSON

Not enabled

Buat tabel eksternal

Sintaks

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';

Parameter

Untuk informasi lebih lanjut, lihat Parameter sintaks dasar.

Kueri dan analisis

  • Untuk informasi lebih lanjut tentang sintaks SELECT, lihat Baca data dari OSS.

  • Untuk informasi lebih lanjut tentang optimasi rencana kueri, lihat Optimasi kueri.

Contoh

Contoh ini menunjukkan cara menggunakan resolver data open source bawaan untuk membuat tabel eksternal Delta Lake, menulis data ke OSS, dan melakukan kueri terhadap data tersebut.

  1. Prasyarat

    • Proyek MaxCompute telah dibuat.

    • Bucket dan folder OSS tersedia. Untuk informasi lebih lanjut, lihat Buat bucket dan Kelola folder.

      MaxCompute mendukung pembuatan folder secara otomatis di OSS. Jika suatu pernyataan SQL melibatkan tabel eksternal dan user-defined function (UDF), Anda dapat menggunakan satu pernyataan untuk membaca dan menulis ke tabel serta menggunakan UDF tersebut. Anda juga dapat membuat folder secara manual.

      MaxCompute hanya dideploy di wilayah tertentu. Untuk menghindari potensi masalah koneksi data cross-region, pastikan bucket OSS Anda berada di wilayah yang sama dengan proyek MaxCompute Anda.
    • Otorisasi

      • Anda harus memiliki izin untuk mengakses OSS. Anda dapat menggunakan Akun Alibaba Cloud, pengguna Resource Access Management (RAM), atau Peran RAM untuk mengakses tabel eksternal OSS. Untuk informasi lebih lanjut tentang otorisasi, lihat Otorisasi akses dalam mode STS untuk OSS.

      • Anda harus memiliki izin CreateTable di proyek MaxCompute. Untuk informasi lebih lanjut tentang izin tabel, lihat Izin MaxCompute.

  2. Unggah data uji

    Masuk ke Konsol OSS dan unggah file data uji dalam format Delta Lake ke folder oss-mc-test/Demo_delta_pt/dt=20250612/ di bucket OSS Anda. Untuk informasi lebih lanjut, lihat Unggah file ke OSS.

  3. Buat tabel eksternal 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/';
  4. Impor data partisi. Jika tabel eksternal OSS yang dibuat merupakan tabel partisi, Anda juga harus mengimpor data partisinya. Untuk informasi lebih lanjut, lihat Sintaks untuk menambahkan data partisi ke tabel eksternal OSS.

    MSCK REPAIR TABLE test_delta_pt ADD PARTITIONS;
  5. Lakukan kueri terhadap tabel eksternal Delta Lake.

    SELECT * FROM test_delta_pt WHERE dt='20250612';