Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Apache Iceberg adalah format tabel sumber terbuka untuk beban kerja analitik yang mendukung fitur seperti evolusi skema, perjalanan waktu, dan partisi tersembunyi. Seperti Delta Lake, Iceberg membuat lapisan abstraksi yang memungkinkan transaksi ACID pada data Anda dalam penyimpanan objek.
Azure Databricks mendukung tabel Iceberg yang menggunakan format file Apache Parquet dan versi 1, 2, dan 3 spesifikasi Iceberg. Iceberg mempertahankan atomitas dan konsistensi dengan menulis file metadata baru untuk setiap perubahan tabel. Semua tabel Iceberg dalam Azure Databricks mengikuti spesifikasi format tabel Iceberg terbuka. Lihat spesifikasi tabel Iceberg.
Katalog Iceberg adalah lapisan tingkat atas arsitektur tabel Iceberg yang mengembalikan metadata saat ini saat memuat tabel. Katalog Iceberg menangani operasi seperti membuat, menghapus, dan mengganti nama tabel.
Azure Databricks mendukung tabel Iceberg yang dikelola oleh:
- Katalog Unity
- Katalog asing, seperti AWS Glue, Hive metastore, atau Horizon Catalog Snowflake
Persyaratan
Untuk menggunakan tabel yang dikelola Apache Iceberg atau asing, Anda harus memenuhi persyaratan berikut:
- Gunakan ruang kerja dengan Unity Catalog diaktifkan.
- Gunakan Databricks Runtime 16.4 LTS atau lebih tinggi.
Untuk tabel terkelola, Anda juga harus memenuhi persyaratan berikut:
- Ruang kerja dengan komputasi tanpa server diaktifkan
Azure Databricks menggunakan komputasi tanpa server untuk mempertahankan metadata tabel Iceberg untuk tabel terkelola. Komputasi tanpa server harus memiliki konektivitas jaringan ke akun penyimpanan cloud yang mendukung tabel. Jika firewall melindungi akun penyimpanan, konfigurasikan konektivitas jaringan tanpa server sehingga komputasi tanpa server dapat menjangkaunya. Konfigurasi yang diperlukan bergantung pada cloud yang Anda gunakan. Untuk informasi selengkapnya, lihat Jaringan sarana komputasi tanpa server.
Membuat tabel Iceberg di Unity Catalog
Tabel Iceberg yang Anda buat di Unity Catalog adalah tabel Iceberg terkelola. Anda dapat membuat tabel ini menggunakan:
- Databricks Runtime atau Databricks SQL
- Mesin eksternal yang kompatibel dengan Iceberg yang mendukung Iceberg REST Catalog API, seperti Apache Spark, Flink, Trino, atau Kafka. Lihat tabel Access Azure Databricks dari klien Apache Iceberg.
Tabel Iceberg terkelola sepenuhnya terintegrasi dengan fitur platform Azure Databricks:
- Katalog Unity mengelola tugas siklus hidup seperti kedaluwarsa rekam jepret dan pemadatan file pada tabel ini.
- Pengklusteran cairan meningkatkan performa kueri.
- Pengoptimalan prediktif mengotomatiskan operasi untuk mengurangi biaya penyimpanan dan meningkatkan kecepatan kueri.
- materialized view mendukung penyegaran inkremental agar hasil tetap mutakhir seiring perubahan data sumber.
- tabel streaming mendukung pemuatan data bertahap dari Kafka dan penyimpanan objek cloud menggunakan Databricks SQL.
Databricks merekomendasikan penggunaan klien Iceberg versi 1.9.2 ke atas untuk membaca dan menulis ke Unity Catalog.
Mengakses tabel Iceberg yang dikelola oleh katalog yang lain
Tabel Iceberg asing adalah tabel Iceberg yang dikelola oleh katalog di luar Unity Catalog. Katalog eksternal menyimpan metadata tabel saat ini. Azure Databricks menggunakan Lakehouse Federation untuk mengambil metadata dan membaca tabel dari penyimpanan objek.
Tabel Iceberg asing bersifat baca-saja di Azure Databricks dan memiliki dukungan platform terbatas.
Mengakses tabel Iceberg menggunakan sistem eksternal
Anda dapat mengakses semua tabel Iceberg di Unity Catalog menggunakan Iceberg REST Catalog API. API terbuka ini mendukung operasi baca dan tulis dari mesin Iceberg eksternal di berbagai bahasa dan platform. Lihat tabel Access Azure Databricks dari klien Apache Iceberg.
Katalog REST mendukung penjual kredensial, yang memberikan kredensial sementara ke mesin eksternal untuk mengakses penyimpanan yang mendasar. Untuk informasi selengkapnya, lihat Penyediaan kredensial Katalog Unity untuk akses sistem eksternal.
Peringatan
Penyediaan kredensial tidak didukung di ruang kerja yang menggunakan penyimpanan default. Lihat Batasan.
Klon tabel terkelola Iceberg
Anda dapat membuat salinan lengkap dan independen dari tabel Iceberg terkelola menggunakan DEEP CLONE. Klon penuh menyalin file data tabel tersebut dan metadata ke dalam tabel Iceberg terkelola baru di Unity Catalog. Lihat Mengkloning tabel Iceberg yang dikelola.
Membuat tampilan materialisasi yang kompatibel dengan pembaca Iceberg eksternal
Important
Tampilan materialisasi Gunung Es Terkelola ada di Pratinjau Umum. Untuk mengaktifkan fitur ini, hubungi tim akun Databricks Anda.
Anda dapat membuat tampilan materialisasi yang kompatibel dengan pembaca Iceberg eksternal. Untuk membuatnya, gunakan USING ICEBERG dalam CREATE MATERIALIZED VIEW pernyataan. Untuk sintaks lengkapnya, lihat CREATE MATERIALIZED VIEW (pipelines). Untuk persyaratan lengkap, lihat Mengaktifkan akses data eksternal ke tabel streaming dan tampilan materialisasi.
CREATE MATERIALIZED VIEW <mv_name>
USING ICEBERG
AS
SELECT * FROM samples.nyctaxi.trips;
Setelah Anda membuat tampilan materialisasi, jalankan REPAIR TABLE dengan SYNC METADATA. Lihat REPAIR TABLE.
REPAIR TABLE <mv_name> SYNC METADATA;
Pembaca Iceberg eksternal dapat membaca tampilan materialisasi tetapi tidak dapat menulis ke dalamnya. Untuk membaca tampilan materialisasi menggunakan pembaca Iceberg eksternal, lihat Mengaktifkan akses data eksternal ke tabel streaming dan tampilan materialisasi.
Evolusi partisi
Dengan evolusi partisi, Anda dapat mengubah skema partisi tabel Apache Iceberg yang ada tanpa menulis ulang data. Data baru ditulis dengan tata letak partisi yang diperbarui dan data yang ada mempertahankan tata letak partisi aslinya. Apache Iceberg melacak spesifikasi partisi dan menerapkan filter yang benar pada waktu kueri. Lihat evolusi partisi untuk Apache Iceberg.
Nota
Evolusi partisi didukung pada tabel Iceberg terkelola melalui mesin Iceberg eksternal menggunakan Iceberg REST Catalog, tetapi tidak melalui Databricks SQL. Transformasi partisi berbasis ekspresi seperti years() dan bucket() tidak didukung untuk tabel Iceberg terkelola. Lihat Batasan.
Untuk mengonfigurasi akses eksternal, lihat tabel Access Azure Databricks dari klien Apache Iceberg.
Contoh berikut menunjukkan cara menggunakan evolusi partisi dengan Spark SQL dan ekstensi Iceberg. Untuk sintaks evolusi partisi Apache Iceberg dan transformasi yang didukung, lihat Apache Iceberg Spark DDL.
Menambahkan bidang partisi
Untuk menambahkan bidang partisi baru ke tabel yang sudah ada:
ALTER TABLE catalog.schema.table ADD PARTITION FIELD column_name;
Menghapus bidang partisi
Untuk menghapus bidang partisi yang sudah ada dari tabel:
ALTER TABLE catalog.schema.table DROP PARTITION FIELD column_name;
Mengganti bidang partisi
Untuk menukar satu bidang partisi dengan bidang lain tanpa repartisi perantara:
ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;
Keterbatasan
Batasan berikut berlaku untuk tabel Iceberg di Azure Databricks dan dapat berubah:
- Tabel Iceberg hanya mendukung format file Apache Parquet.
- Pada Iceberg v2, penghapusan berdasarkan posisi dan penghapusan berdasarkan kesetaraan tidak didukung. Sebaliknya, Azure Databricks mendukung vektor penghapusan Iceberg v3 untuk penghapusan tingkat baris.
- Pencabangan dan pemberian tag tidak didukung. Hanya cabang utama yang dapat diakses ketika membaca tabel Iceberg asing.
- Pemartisian
- Evolusi partisi didukung pada tabel Iceberg yang dikelola hanya saat berinteraksi dengan mesin Iceberg eksternal.
- Tabel Iceberg asing tidak mendukung evolusi partisi.
- Pemartisian menurut
BINARYjenis tidak didukung.
- Tampilan tidak dapat diakses dari mesin Iceberg eksternal.
- Jenis data berikut ini tidak didukung:
UUIDFixed(L)TIME- Berlapis
STRUCTdengan bidang yang diperlukan
- Untuk batasan khusus untuk Iceberg v3, lihat Batasan.
Batasan tabel Iceberg yang Dikelola
Batasan berikut berlaku khusus untuk tabel Iceberg terkelola:
- Pencarian AI tidak didukung. Lihat Databricks AI Search.
- Jika Anda menggunakan tabel Iceberg terkelola sebagai sumber untuk tabel yang disinkronkan untuk Lakebase, pemrosesan bertahap dengan umpan data perubahan otomatis tidak didukung.
- Tabel Iceberg terkelola hanya dapat dibuat jika pengoptimalan prediktif diaktifkan untuk pemeliharaan tabel.
- Properti tabel berikut dikelola oleh Katalog Unity dan tidak dapat diatur secara manual:
write.location-provider.implwrite.data.pathwrite.metadata.pathwrite.format.defaultwrite.delete.format.default
- Codec kompresi untuk mengubah pemadatan tabel tidak didukung. Semua tabel menggunakan Zstd secara default.
- Pemartisian menurut ekspresi (misalnya, ,
years(),months()days(),hours(),bucket()) tidak didukung. - Fitur yang tidak didukung di Apache Iceberg juga tidak tersedia untuk tabel Iceberg terkelola. Ini termasuk kolom yang dihasilkan Delta Lake, kendala di Azure Databricks, dan dukungan penyusunan untuk Delta Lake.
Batasan tabel Gunung Es Asing
Batasan berikut berlaku khusus untuk tabel Iceberg asing:
- Perjalanan waktu hanya didukung untuk rekam jepret Iceberg yang sebelumnya telah dibaca di Azure Databricks (yaitu, rekam jepret tempat pernyataan
SELECTdijalankan). - Menggunakan fungsi transformasi bucket untuk pemartisian Iceberg dapat menurunkan performa kueri saat filter kondisional digunakan.
- Produk pengelompokan penyimpanan cloud seperti Amazon S3 tidak terintegrasi dengan tabel Iceberg eksternal. Mengakses tabel Iceberg asing di Azure Databricks dapat memulihkan data yang diarsipkan dalam tingkat penyimpanan dengan biaya lebih rendah.
- Pada kluster mode akses khusus, pembacaan dan proses
REFRESH FOREIGN TABLEoperasi pada tabel Iceberg memerlukanALL PRIVILEGES.