全部产品
Search
文档中心

MaxCompute:Tabel eksternal Hudi

更新时间:Jan 01, 2026

Topik ini menjelaskan cara membuat, membaca, dan menulis data ke tabel eksternal OSS dalam format Hudi.

Penting

MaxCompute hanya mendukung fitur tabel eksternal untuk versi kit pengembangan perangkat lunak (SDK) Hudi yang telah dipublikasikan. Tidak akan ada pembaruan versi atau peningkatan fitur lebih lanjut. Gunakan tabel eksternal Paimon untuk membaca data dalam format tabel data lake.

Cakupan

  • Tabel eksternal OSS tidak mendukung properti kluster.

  • Ukuran 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 Hudi hanya mendukung pembacaan seluruh data dari file yang dipetakan. Kolom sistem tidak disembunyikan secara otomatis, serta operasi baca inkremental, baca snapshot, atau tulis tidak didukung. Untuk operasi baca dan tulis yang memerlukan atomicity, consistency, isolation, dan durability (ACID), gunakan fitur seperti tabel Delta MaxCompute atau tabel eksternal Paimon.

  • Versi SDK Hudi default yang terintegrasi ke dalam MaxCompute adalah org.apache.hudi:hudi-hadoop-mr-bundle:0.12.2-emr-1.0.6. MaxCompute tidak menjamin kompatibilitas maju atau mundur untuk SDK Hudi. Komunitas open source bertanggung jawab atas kompatibilitas tersebut.

Tipe data yang didukung

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

Tipe data

Dukungan

Tipe data

Dukungan

TINYINT

Activated

STRING

Not Enabled

SMALLINT

Enabled

DATE

Not enabled

INT

Enabled

DATETIME

Not enabled

BIGINT

Enabled

TIMESTAMP

Not enabled

BINARY

Enabled

TIMESTAMP_NTZ

Not enabled

FLOAT

Not enabled

BOOLEAN

Activated

DOUBLE

Not activated

ARRAY

Enabled

DECIMAL(precision,scale)

Enabled

MAP

Not enabled

VARCHAR(n)

Not activated

STRUCT

Not enabled

CHAR(n)

Not enabled

JSON

Not Activated

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 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'oss_location';

Parameter

Untuk informasi lebih lanjut, lihat Parameter sintaks dasar.

Kueri dan analisis

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

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

Contoh skenario

Buat tabel eksternal dalam format Hudi menggunakan parser data open source bawaan, tulis data ke OSS, lalu lakukan kueri terhadap data tersebut.

  1. Prasyarat

    • Proyek MaxCompute telah dibuat.

    • Bucket OSS dan folder 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 sekaligus menggunakan UDF tersebut. Anda juga dapat membuat folder secara manual.

      MaxCompute hanya dideploy di wilayah tertentu. Untuk menghindari potensi masalah koneksi data lintas wilayah, 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 mengenai otorisasi, lihat Otorisasi akses dalam mode STS untuk OSS.

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

  2. Unggah data uji

    Masuk ke Konsol OSS dan unggah file data uji berformat Hudi ke folder oss-mc-test/Demo_hudi_pt/dt=20250612/ di bucket OSS. Untuk informasi lebih lanjut, lihat Unggah file ke OSS.

  3. Anda dapat membuat tabel eksternal Delta Lake.

    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/';
  4. Impor data partisi. Setelah membuat tabel eksternal OSS yang dipartisi, Anda harus menambahkan partisinya. Untuk informasi lebih lanjut, lihat Sintaks untuk menambahkan data partisi ke tabel eksternal OSS.

    MSCK REPAIR TABLE vehicle_hudi_pt ADD PARTITIONS;
  5. Baca tabel eksternal Hudi

    SELECT * FROM vehicle_hudi_pt WHERE ds='20250612';