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
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 |
|
|
|
Siklus hidup tabel |
MaxCompute hanya memetakan tabel. |
MaxCompute mengelola siklus hidup penuh metadata dan data OSS. Direktori OSS yang ditentukan harus kosong saat pembuatan. |
|
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:
|
Tipe data yang didukung
|
Tipe data Iceberg |
Tipe data MaxCompute |
Dukungan baca/tulis |
|
Types.BooleanType |
BOOLEAN |
|
|
Types.IntegerType |
INT |
|
|
Types.LongType |
BIGINT |
|
|
Types.FloatType |
FLOAT |
|
|
Types.DoubleType |
DOUBLE |
|
|
Types.DecimalType |
DECIMAL(precision, scale)
|
|
|
Types.DateType |
DATE |
|
|
Types.TimeType |
BIGINT
|
|
|
Types.TimestampType |
TIMESTAMP_NTZ |
|
|
Types.TimestampType_z |
TIMESTAMP |
|
|
Types.StringType |
STRING |
|
|
Types.UUIDType |
BINARY
|
|
|
Types.FixedType |
BINARY |
|
|
Types.BinaryType |
BINARY |
|
|
TypeID.STRUCT |
STRUCT |
|
|
TypeID.LIST |
ARRAY |
|
|
TypeID.MAP |
MAP |
|
|
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
-
Untuk tabel Iceberg yang dikelola MaxCompute:
-
Pernyataan Rename Table tidak didukung.
-
Pernyataan XCOPY Cross-Region Replication tidak didukung.
-
Pernyataan CLONE TABLE dan RENAME TABLE tidak didukung.
-
Pernyataan untuk mengganti nama snapshot tabel tidak didukung.
-
Menetapkan nilai default untuk kolom tidak didukung.
-
Memodifikasi tipe data kolom tidak didukung.
-
Operasi materialized view tidak didukung.
-
Pernyataan UPDATE tidak didukung.
-
Kontrol akses tingkat baris tidak didukung.
-
Pernyataan TRUNCATE tidak didukung.
-
CDC (private preview) tidak didukung.
-
Backup lokal tidak didukung.
-
Pernyataan
CREATE OR REPLACEtidak didukung. -
Perintah
LOADdanUNLOADtidak didukung.
-
-
Kueri konsol dan tanggapan API menampilkan ukuran penyimpanan tabel Iceberg yang dikelola sebagai 0 byte.
-