Bagikan melalui


Membaca tabel-tabel Databricks menggunakan klien Iceberg

Gunakan katalog Iceberg REST untuk membaca tabel terdaftar Unity Catalog di Azure Databricks dari klien Iceberg yang didukung, termasuk Apache Spark, Apache Flink, Trino, dan Snowflake.

Baca menggunakan titik akhir katalog Unity Catalog Iceberg

Katalog Unity menyediakan implementasi API katalog REST Iceberg yang bersifat hanya-baca untuk tabel yang telah diaktifkan pembacaan Iceberg.

Konfigurasikan akses menggunakan titik akhir /api/2.1/unity-catalog/iceberg. Lihat spesifikasi Iceberg REST API untuk detail tentang penggunaan REST API ini.

Nota

Azure Databricks telah memperkenalkan penyediaan kredensial untuk beberapa klien pembaca Iceberg. Databricks merekomendasikan penggunaan kredensial vending untuk mengontrol akses ke lokasi penyimpanan cloud untuk sistem yang didukung. Lihat penyediaan kredensial Katalog Unity untuk akses sistem eksternal.

Jika fungsi distribusi kredensial tidak didukung untuk klien Anda, Anda harus mengonfigurasi akses dari klien ke lokasi penyimpanan cloud yang berisi file dan metadata untuk tabel Delta dengan fitur pembacaan Iceberg (UniForm) diaktifkan. Lihat dokumentasi untuk klien pembaca Iceberg Anda untuk detail konfigurasi.

Persyaratan

Azure Databricks mendukung akses katalog Iceberg REST ke tabel sebagai bagian dari Unity Catalog. Anda harus memiliki Katalog Unity yang diaktifkan di ruang kerja Anda untuk menggunakan endpoint ini. Jenis tabel berikut memenuhi syarat untuk pembacaan katalog Iceberg REST:

  • Tabel yang dikelola oleh Unity Catalog dengan fitur pembacaan Iceberg (UniForm) yang diaktifkan.
  • Tabel eksternal Unity Catalog yang disimpan menggunakan Delta Lake dengan pembacaan dari Iceberg (UniForm) diaktifkan.

Lihat tabel Read Delta dengan klien Iceberg.

Anda harus menyelesaikan langkah-langkah konfigurasi berikut untuk mengonfigurasi akses untuk membaca tabel Databricks dari klien Iceberg menggunakan katalog Iceberg REST:

Membaca tabel Iceberg dengan Apache Spark

Berikut ini adalah contoh pengaturan untuk mengonfigurasi Apache Spark untuk membaca tabel Azure Databricks sebagai Iceberg:

"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",

# Configuration for accessing Uniform tables in Unity Catalog
"spark.sql.catalog.<spark-catalog-name>": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<spark-catalog-name>.type": "rest",
"spark.sql.catalog.<spark-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg",
"spark.sql.catalog.<spark-catalog-name>.token":"<token>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<uc-catalog-name>"

Ganti variabel berikut:

  • <uc-catalog-name>: Nama katalog di Unity Catalog yang berisi tabel Anda.
  • <spark-catalog-name>: Nama yang ingin Anda tetapkan katalog dalam sesi Spark Anda.
  • <workspace-url>: URL ruang kerja Azure Databricks.
  • <token>: Token PAT untuk pengguna utama yang mengonfigurasi integrasi.

Dengan konfigurasi ini, Anda dapat mengkueri tabel Azure Databricks sebagai Iceberg di Apache Spark menggunakan pengidentifikasi <catalog-name>.<schema-name>.<table-name>. Untuk mengakses tabel di beberapa katalog, Anda harus mengonfigurasi setiap katalog secara terpisah.

Saat Anda mengkueri tabel di Unity Catalog menggunakan konfigurasi Spark, ingatlah hal berikut:

  • Anda memerlukan "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" hanya jika Anda menjalankan prosedur tersimpan yang khusus untuk Iceberg .

  • Azure Databricks menggunakan penyimpanan objek cloud untuk semua tabel. Anda harus menambahkan JAR bundel Iceberg khusus cloud sebagai paket Spark:

    • AWS: org.apache.iceberg:iceberg-aws-bundle:<iceberg-version>
    • Azure: org.apache.iceberg:iceberg-azure-bundle:<iceberg-version>
    • GCP: org.apache.iceberg:iceberg-gcp-bundle:<iceberg-version>

    Untuk detailnya, lihat dokumentasi untuk integrasi Iceberg AWS untuk Spark.

Membaca tabel Databricks dengan Snowflake

Berikut ini adalah contoh pengaturan konfigurasi yang direkomendasikan untuk memungkinkan Snowflake membaca tabel Azure Databricks sebagai Iceberg:

CREATE OR REPLACE CATALOG INTEGRATION <catalog-integration-name>
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = '<uc-schema-name>'
  REST_CONFIG = (
    CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg',
    WAREHOUSE = '<uc-catalog-name>'
  )
  REST_AUTHENTICATION = (
    TYPE = BEARER
    BEARER_TOKEN = '<token>'
  )
  ENABLED = TRUE;

Ganti variabel berikut:

  • <catalog-integration-name>: Nama yang ingin Anda tetapkan untuk katalog yang terdaftar di Snowflake.
  • <uc-schema-name>: Nama skema di Unity Catalog yang perlu Anda akses.
  • <uc-catalog-name>: Nama katalog di Unity Catalog yang perlu Anda akses.
  • <workspace-url>: URL ruang kerja Azure Databricks.
  • <token>: Token PAT untuk pengguna utama yang mengonfigurasi integrasi.

Contoh penggunaan curl pada REST API

Anda juga dapat menggunakan panggilan REST API seperti yang ada dalam contoh curl ini untuk memuat tabel:

curl -X GET -H "Authentication: Bearer $OAUTH_TOKEN" -H "Accept: application/json" \
https://<workspace-instance>/api/2.1/unity-catalog/iceberg/v1/catalogs/<uc_catalog_name>/namespaces/<uc_schema_name>/tables/<uc_table_name>

Anda kemudian harus menerima respons seperti ini:

{
  "metadata-location": "abfss://my-container@my-storage-account.dfs.core.windows.net/path/to/iceberg/table/metadata/file",
  "metadata": <iceberg-table-metadata-json>,
  "config": {
    "expires-at-ms": "<epoch-ts-in-millis>",
    "adls.sas-token.<storage-account-name>.dfs.core.windows.net": "<temporary-sas-token>"
  }
}

Nota

Bidang expires-at-ms dalam respons menunjukkan waktu kedaluwarsa kredensial dan memiliki waktu kedaluwarsa default satu jam. Untuk performa yang lebih baik, minta klien menyimpan kredensial hingga waktu kedaluwarsa sebelum meminta yang baru.