All Products
Search
Document Center

MaxCompute:Tabel Iceberg yang Dikelola MaxCompute (Beta)

Last Updated:Jun 16, 2026
Penting

Fitur ini sedang dalam tahap private preview. Untuk mengajukan permohonan, lengkapi Formulir Permohonan Uji Coba. Tim MaxCompute akan meninjau permohonan dalam waktu 3 hari kerja dan mengirimkan hasilnya melalui SMS. Jika Anda memiliki pertanyaan terkait hasil tersebut, hubungi kami melalui Tautan Permohonan.

Ikhtisar

MaxCompute menyimpan tabel Apache Iceberg di Object Storage Service (OSS) dengan pengelolaan metadata, izin, dan siklus hidup yang terpadu. Tabel Iceberg kompatibel dengan mesin open-source seperti Spark, Flink, Trino, dan Presto, sehingga memungkinkan berbagi data multi-mesin dalam arsitektur Lakehouse.

Format Iceberg yang terbuka menghilangkan silodata dan memungkinkan berbagi data secara mulus dengan Spark, Flink, dan Hive. Anda dapat memilih mesin komputasi yang tepat untuk setiap workload tanpa vendor lock-in. Standar terbuka ini juga menjamin portabilitas data jangka panjang serta mendukung kolaborasi lintas organisasi dalam skenario multi-cloud.

Tabel Iceberg yang dikelola MaxCompute menawarkan fitur-fitur berikut:

  • Pengelolaan data tabel lake Iceberg:

    Buat, baca, dan tulis tabel Iceberg di OSS menggunakan MaxCompute SQL. Mendukung DDL, DML, time travel, evolusi skema, dan evolusi partisi.

  • Maintenance latar belakang otomatis:

    Optimasi bawaan menangani compaction, kedaluwarsa snapshot, dan pengarsipan metadata secara otomatis, sehingga tidak perlu maintenance manual.

  • Konsistensi metadata:

    MaxCompute Metastore (MaxMeta) mengelola metadata tabel dengan penulisan yang sesuai ACID. Mesin eksternal harus menggunakan MaxCompute Storage Write API atau mesin native MaxCompute untuk mencegah konflik metadata akibat sumber penulisan ganda.

  • Integrasi ekosistem terbuka:

    Trino, Presto, Spark, Flink, dan Doris dapat mengakses tabel Iceberg yang dikelola secara native, memungkinkan kueri multi-mesin dengan latensi rendah dan konkurensi tinggi.

  • Pengelolaan izin terpadu: Tetapkan izin untuk data lake dan data warehouse Anda dalam satu sistem. Mengintegrasikan izin RAM dengan kontrol akses data warehouse untuk keamanan Lakehouse tingkat enterprise.

Catatan penggunaan

Operasi berikut pada tabel Iceberg yang dikelola MaxCompute dapat menyebabkan kehilangan data atau membuat data tidak dapat dibaca:

Operasi yang Dilarang

Konsekuensi

Praktik yang Benar

Memodifikasi data tabel Iceberg melalui antarmuka selain MaxCompute write API.

Tabel mungkin gagal dalam pemeriksaan konsistensi dan menjadi tidak dapat dibaca.

Modifikasi data hanya melalui MaxCompute SQL.

Mengunggah file ke path OSS yang dikelola.

Layanan latar belakang memperlakukan file yang diunggah sebagai file yatim dan menghapusnya.

Jangan mengunggah data ke path yang dikelola.

Memakai path OSS yang sama untuk beberapa tabel Iceberg yang dikelola.

Proses garbage collection setiap tabel akan menghapus file milik tabel lainnya.

Gunakan path OSS unik untuk setiap tabel.

Menggunakan path OSS dengan hubungan direktori induk-anak untuk tabel Iceberg yang dikelola berbeda.

Garbage collection setiap tabel memperlakukan file tabel lain sebagai data yatim dan menghapusnya, menyebabkan kehilangan data.

Gunakan path OSS unik untuk setiap tabel Iceberg yang dikelola. Hindari path dengan hubungan induk-anak.

Buat tabel

Sintaks

CREATE ICEBERG TABLE [IF NOT EXISTS] <nama_tabel> (
  <nama_kolom> <tipe_data>,
  ...
)
PARTITIONED BY (<ekspresi_partisi>)
WITH CONNECTION <nama_koneksi>
OPTIONS(
  location='<lokasi_oss>'
)
;

Parameter

Klik untuk memperluas detail parameter

Parameter

Wajib

Deskripsi

nama tabel

Ya

Nama tabel.

Tidak peka huruf besar/kecil. Konversi huruf besar/kecil tidak didukung.

nama_kolom

Ya

Nama kolom.

Skema harus sesuai dengan file data OSS. Ketidaksesuaian skema mencegah pembacaan data.

tipe data

Ya

Tipe data kolom.

Tipe data setiap kolom harus sesuai dengan tipe yang sesuai di file data OSS. Ketidaksesuaian tipe mencegah pembacaan data.

komentar_tabel

Tidak

Komentar tabel. Harus berupa string valid dengan panjang maksimal 1.024 byte.

partitionExpression

Tidak

Ekspresi partisi dengan semantik yang sama seperti ekspresi partisi Iceberg. Fungsi yang didukung:

  • <nama_kolom>: Nilai partisi adalah nilai mentah kolom tersebut.

  • BUCKET ( <jumlah_bucket> , <nama_kolom> ): Melakukan hash terhadap nilai kolom modulo N. Rentang hasil: 0 hingga N-1.

  • TRUNCATE ( <lebar> , <nama_kolom> ): Memotong nilai bidang hingga lebar yang ditentukan untuk partisi.

  • YEAR ( <nama_kolom> ): Mengekstrak tahun dari tanggal atau timestamp.

  • MONTH ( <nama_kolom> ): Mengekstrak bulan dari tanggal atau timestamp.

  • DAY ( <nama_kolom> ): Mengekstrak hari dari tanggal atau timestamp.

  • HOUR ( <nama_kolom> ): Mengekstrak jam dari timestamp.

Nama koneksi

Ya

Nama CONNECTION. Buat CONNECTION.

oss_location

Ya

Path OSS untuk file data. Ini adalah direktori induk dari direktori data dan metadata.

Formatnya adalah location='oss://<Nama Bucket>/<Nama direktori OSS>/'.

  • Nama Bucket: Nama bucket OSS. Untuk informasi lebih lanjut, lihat Daftar bucket.

  • Nama direktori: Path direktori OSS. Tidak boleh mencakup nama file. Contoh: oss://oss-mc-test/Demo1/.

Contoh

CREATE ICEBERG TABLE mc_iceberg_table (
  id bigint COMMENT 'ID pengguna unik',
  name string COMMENT 'Nama pengguna',
  age bigint COMMENT 'Usia pengguna',
  gender string COMMENT 'Jenis kelamin pengguna',
  height float COMMENT 'Tinggi badan pengguna',
  birthday date COMMENT 'Tanggal lahir pengguna',
  phone_number string COMMENT 'Nomor telepon pengguna',
  email string COMMENT 'Alamat email pengguna',
  address string COMMENT 'Alamat pengguna',
  salary decimal(18, 2) COMMENT 'Gaji pengguna',
  create_time timestamp COMMENT 'Waktu saat informasi pengguna dibuat',
  update_time timestamp COMMENT 'Waktu saat informasi pengguna terakhir diperbarui',
  is_deleted boolean COMMENT 'Penanda apakah informasi pengguna telah dihapus',
  dt string COMMENT 'Bidang partisi'
)
PARTITIONED BY (dt)
WITH CONNECTION <nama_koneksi>
OPTIONS(
  location='oss://<bucket_oss>/Demo-iceberg/'
);

Menulis data

  • Sintaks penulisan MaxCompute: Deskripsi sintaks.

  • Contoh:

    SET odps.sql.type.system.odps2=true;
    SET odps.sql.decimal.odps2=true;
    
    INSERT INTO mc_iceberg_table VALUES
        (1, 'Zhang San', 18, 'Male', cast (178.56 as float), DATE '1990-01-01', '13800000000', 'zhangsan@example.com', 'Haidian District, Beijing', 5000.00, TIMESTAMP '2023-04-19 11:32:00', TIMESTAMP '2023-04-19 11:32:00', false,'20260402'),
        (2, 'Li Si', 20, 'Female', cast (162.70 as float), DATE '1992-02-02', '13900000000', 'lisi@example.com', 'Pudong New Area, Shanghai', 6000.00, TIMESTAMP '2023-04-19 11:32:00', TIMESTAMP '2023-04-19 11:32:00',false,'20260401'),
        (3, 'Wang Wu', 22, 'Male', cast (185.21 as float), DATE '1994-03-03', '14000000000', 'wangwu@example.com', 'Nanshan District, Shenzhen', 7000.00, TIMESTAMP '2023-04-19 11:32:00', TIMESTAMP '2023-04-19 11:32:00', false,'20260403')
    ;

Meminta dan menganalisis data

  • Sintaks SELECT: Deskripsi sintaks.

  • Contoh:

    SELECT * FROM mc_iceberg_table;
    
    -- Hasil berikut dikembalikan:
    +------------+------+------------+--------+--------+----------+--------------+-------+---------+--------+-------------+-------------+------------+----+
    | id         | name | age        | gender | height | birthday | phone_number | email | address | salary | create_time | update_time | is_deleted | dt |
    +------------+------+------------+--------+--------+----------+--------------+-------+---------+--------+-------------+-------------+------------+----+
    | 1          | Zhang San  | 18         | Male   | 178.56 | 1990-01-01 | 13800000000  | zhangsan@example.com | Haidian District, Beijing | 5000   | 2023-04-19 03:32:00 | 2023-04-19 03:32:00 | false      | 20260402 |
    | 2          | Li Si      | 20         | Female | 162.7  | 1992-02-02 | 13900000000  | lisi@example.com     | Pudong New Area, Shanghai | 6000   | 2023-04-19 03:32:00 | 2023-04-19 03:32:00 | false      | 20260401 |
    | 3          | Wang Wu    | 22         | Male   | 185.21 | 1994-03-03 | 14000000000  | wangwu@example.com   | Nanshan District, Shenzhen| 7000   | 2023-04-19 03:32:00 | 2023-04-19 03:32:00 | false      | 20260403 |
    +------------+------+------------+--------+--------+----------+--------------+-------+---------+--------+-------------+-------------+------------+----+

Tabel Iceberg eksternal vs. tabel yang dikelola

Dimensi

Tabel Iceberg eksternal

Tabel Iceberg yang dikelola MaxCompute

Pernyataan CREATE TABLE

CREATE EXTERNAL TABLE [if NOT EXISTS] <nama_tabel_eksternal_mc_oss>
(
 <nama_kolom> <tipe_data>,
 ...
)
[COMMENT <komentar_tabel>]
[PARTITIONED BY (<nama_kolom> <tipe_data>, ...)]
STORED AS ICEBERG
WITH SERDEPROPERTIES (
 'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole'
)
LOCATION '<lokasi_oss>' 
TBLPROPERTIES ('<nama_properti_tb>'='<nilai_properti_tb>',...);
CREATE [OR REPLACE] ICEBERG TABLE [IF NOT EXISTS] <nama_tabel> 
(
 <nama_kolom> <tipe_data>,
 ...
)
PARTITIONED BY (<ekspresi_partisi>)
WITH CONNECTION <nama_koneksi>
OPTIONS(
 <identifier> = expr,
 ...
)
[LIFECYCLE <hari>];

Siklus hidup tabel

MaxCompute hanya memetakan tabel. DROP TABLE hanya menghapus metadata, bukan data OSS.

MaxCompute mengelola siklus hidup penuh metadata dan data OSS. Direktori OSS yang ditentukan harus kosong saat pembuatan. DROP TABLE hanya menghapus metadata, bukan data OSS.

Tata kelola metadata dan data

Sama seperti tabel eksternal standar.

Cache metadata berkinerja tinggi.

Keterbukaan data (baca/tulis oleh mesin open-source)

Konsistensi dijamin oleh format Iceberg.

MaxCompute menjamin konsistensi baca/tulis. Mesin open-source membaca langsung dari OSS atau menggunakan MaxCompute Storage API.

Maintenance tabel lake

Dipelihara oleh pengguna.

Maintenance latar belakang otomatis:

  • Compaction otomatis

  • Pembersihan otomatis snapshot yang kedaluwarsa

  • Garbage collection otomatis

Tipe data yang didukung

Tipe data Iceberg

Tipe data MaxCompute

Dukungan baca/tulis

Types.BooleanType

BOOLEAN

Didukung

Types.IntegerType

INT

Didukung

Types.LongType

BIGINT

Didukung

Types.FloatType

FLOAT

Didukung

Types.DoubleType

DOUBLE

Didukung

Types.DecimalType

DECIMAL(precision, scale)

  • 0 <= precision <= 38

  • 0 <= scale <= 18

Didukung

Types.DateType

DATE

Didukung

Types.TimeType

BIGINT

  • MaxCompute menulis data ke tipe TIME Iceberg dengan presisi mikrodetik.

  • Untuk menulis ke tabel eksternal Iceberg, Anda harus menentukan bidang waktu dalam properti tabel iceberg_time_fields.

    • col1;col2

    • Untuk tipe list: col1.entry

    • Untuk tipe map: col1.key;col1.value

    • Untuk tipe struct: col1.field1;col2.field2

Didukung

Types.TimestampType

TIMESTAMP_NTZ

Didukung

Types.TimestampType_z

TIMESTAMP

Didukung

Types.StringType

STRING

Didukung

Types.UUIDType

BINARY

  • UUID harus memiliki panjang 16 byte.

  • Untuk detail tentang uuid, lihat tautan konversi ini.

  • Untuk menulis ke tabel eksternal Iceberg, Anda harus menentukan bidang UUID dalam properti tabel iceberg_uuid_fields.

    • col1;col2

    • Untuk tipe list: col1.entry

    • Untuk tipe map: col1.key;col1.value

    • Untuk tipe struct: col1.field1;col2.field2

Tidak didukung

Types.FixedType

BINARY

Didukung

Types.BinaryType

BINARY

Didukung

TypeID.STRUCT

STRUCT

Didukung

TypeID.LIST

ARRAY

Didukung

TypeID.MAP

MAP

Didukung

N/A

TINYINT, SMALLINT, VARCHAR(n), CHAR(n), DATETIME, JSON

N/A

Batasan

  • Batasan Versi

    • Hanya fitur yang kompatibel dengan Iceberg SDK 1.6.1 yang didukung.

    • Pembacaan dan penulisan hanya didukung untuk format tabel Iceberg v2.

    • Fitur format Iceberg v3 tidak didukung.

  • Operasi yang Didukung

    • Tipe data MaxCompute: Tipe data (Versi 1.0) dan Tipe data (Versi 2.0).

    • Evolusi skema saat ini hanya mendukung penambahan dan penghapusan kolom.

    • Pemangkasan partisi didukung. Jika tidak diaktifkan, kirimkan masukan melalui Tautan Permohonan atau bergabunglah dengan grup DingTalk Komunitas Pengembang MaxCompute (ID grup: 11782920).

  • Operasi yang Tidak Didukung