Apa itu Apache Iceberg di Azure Databricks?

Important

Tabel Iceberg yang dikelola Unity Catalog tersedia dalam Pratinjau Umum di Databricks Runtime 16.4 LTS ke atas. Tabel Iceberg asing juga berada dalam Pratinjau Umum di Databricks Runtime 16.4 LTS ke atas.

Fitur Iceberg v3 tersedia dalam Pratinjau Umum di Databricks Runtime 18.0 ke atas. Lihat Menggunakan fitur Apache Iceberg v3.

Apache Iceberg adalah format tabel sumber terbuka untuk beban kerja analitik. Ini mendukung fitur seperti evolusi skema, perjalanan waktu, dan partisi tersembunyi. Seperti Delta Lake, Iceberg menyediakan lapisan abstraksi yang memungkinkan transaksi ACID pada data yang disimpan dalam penyimpanan objek. Azure Databricks mendukung tabel Iceberg yang menggunakan format file Apache Parquet. Iceberg mempertahankan atomitas dan konsistensi dengan menulis file metadata baru untuk setiap perubahan tabel.

Katalog Iceberg adalah lapisan tingkat atas arsitektur tabel Iceberg. Ini menangani operasi seperti membuat, menghilangkan, dan mengganti nama tabel. Tanggung jawab utamanya adalah menyediakan metadata saat ini ketika tabel dimuat. Azure Databricks mendukung tabel Iceberg yang dikelola oleh:

Semua tabel Iceberg dalam Azure Databricks mengikuti spesifikasi format tabel Iceberg terbuka. Lihat spesifikasi tabel Iceberg.

Membuat tabel Iceberg di Unity Catalog

Tabel Iceberg yang dibuat di Unity Catalog adalah tabel Iceberg yang dikelola. Anda dapat membuat tabel ini menggunakan:

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. Tabel Iceberg terkelola juga mendukung pengklusteran cairan, yang meningkatkan performa kueri. Pengoptimalan prediktif mengotomatiskan tugas-tugas ini untuk mengurangi biaya penyimpanan dan meningkatkan kecepatan kueri. Databricks merekomendasikan penggunaan klien Iceberg 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.

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 tabel Iceberg.

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;

Batasan tabel gunung es

Batasan berikut berlaku untuk tabel Iceberg di Azure Databricks dan dapat berubah:

  • Tabel Iceberg hanya mendukung format file Apache Parquet.
  • Azure Databricks mendukung spesifikasi Iceberg versi 1, 2, dan 3.
    • Untuk batasan khusus v3, lihat Batasan.
  • Penghapusan posisi Iceberg v2 dan penghapusan berbasis 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 BINARY jenis tidak didukung.
  • Tampilan tidak didukung.
  • Jenis data berikut ini tidak didukung:
    • UUID
    • Fixed(L)
    • TIME
    • Berlapis STRUCT dengan bidang yang diperlukan

Batasan tabel Iceberg yang Dikelola

Batasan berikut berlaku khusus untuk tabel Iceberg terkelola:

  • Pencarian vektor tidak didukung.
  • Iceberg tidak mendukung perubahan umpan data. Akibatnya, pemrosesan bertahap tidak didukung saat membaca tabel Iceberg terkelola sebagai sumber untuk:
    • Tampilan materialisasi dan tabel streaming
    • Pemrofilan data
    • Tabel online
    • Lakebase
    • Klasifikasi data
  • 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.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.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 SELECT dijalankan).
  • 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 TABLE operasi pada tabel Iceberg memerlukan ALL PRIVILEGES.