Udostępnij za pośrednictwem


Odczytywanie tabel Databricks z klientów Iceberga

Katalog REST Iceberg umożliwia odczytywanie tabel zarejestrowanych w katalogu Unity w usłudze Azure Databricks z obsługiwanych klientów Iceberg, w tym Apache Spark, Apache Flink, Trino i Snowflake.

odczytywanie przy użyciu punktu końcowego katalogu Iceberg z Unity Catalog

Unity Catalog zapewnia rozwiązanie tylko do odczytu dla interfejsu API katalogu REST Iceberg dla tabel z włączoną funkcjonalnością odczytu Iceberg.

Skonfiguruj dostęp przy użyciu punktu końcowego /api/2.1/unity-catalog/iceberg. Aby uzyskać szczegółowe informacje na temat korzystania z tego interfejsu API REST, zobacz specyfikację interfejsu API REST Iceberg.

Notatka

Azure Databricks wprowadziło dystrybucję poświadczeń dla niektórych klientów Iceberg. Databricks zaleca używanie zarządzania poświadczeniami w celu kontrolowania dostępu do lokalizacji przechowywania w chmurze w obsługiwanych systemach. Zobacz udostępnianie poświadczeń katalogu Unity, aby uzyskać dostęp do systemu zewnętrznego.

Jeśli obsługa poświadczeń jest nieobsługiwana dla klienta, należy skonfigurować dostęp z klienta do lokalizacji magazynu w chmurze zawierającej pliki i metadane tabeli delty z włączonymi odczytami Góry lodowej (UniForm). Aby uzyskać szczegółowe informacje o konfiguracji, zapoznaj się z dokumentacją klienta Iceberg Reader.

Wymagania

Usługa Azure Databricks obsługuje dostęp do katalogu Iceberg przez REST do tabel w ramach Unity Catalog. Aby korzystać z tych punktów końcowych, musisz mieć włączony Unity Catalog w swoim obszarze roboczym. Następujące typy tabel kwalifikują się do odczytów katalogu REST Iceberg:

  • Tabele zarządzane przez Unity Catalog z włączonym odczytywaniem Iceberg (UniForm).
  • Tabele zewnętrzne Unity Catalog przechowywane w Delta Lake z włączoną funkcją odczytu Iceberg (UniForm).

Zobacz Odczytywanie tabel Delta za pomocą klientów Iceberg.

Należy wykonać następujące kroki konfiguracji, aby skonfigurować dostęp do odczytu tabel Databricks z klientów Iceberg przy użyciu katalogu REST Iceberg:

Odczytywanie tabel Iceberg w Apache Spark

Poniżej przedstawiono przykład ustawień konfigurowania platformy Apache Spark w celu odczytywania tabel usługi Azure Databricks w formacie 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>"

Zastąp następujące zmienne:

  • <uc-catalog-name>: Nazwa katalogu w Unity Catalog, który zawiera twoje tabele.
  • <spark-catalog-name>: nazwa, którą chcesz przypisać do katalogu w sesji platformy Spark.
  • <workspace-url>: adres URL obszaru roboczego usługi Azure Databricks.
  • <token>: token PAT dla głównego podmiotu konfigurującego integrację.

Dzięki tym konfiguracjom, możesz wykonywać zapytania dotyczące tabel usługi Azure Databricks jako Iceberg w platformie Apache Spark, używając identyfikatora <catalog-name>.<schema-name>.<table-name>. Aby uzyskać dostęp do tabel w wielu katalogach, należy skonfigurować każdy wykaz oddzielnie.

Podczas wykonywania zapytań w tabelach w Katalogu Unity przy użyciu konfiguracji Spark warto pamiętać o następujących kwestiach:

  • Potrzebujesz "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" tylko w przypadku, gdy uruchamiasz procedury składowane specyficzne dla Iceberg .

  • Usługa Azure Databricks używa magazynu obiektów w chmurze dla wszystkich tabel. Musisz dodać specyficzny dla chmury pakiet JAR Iceberg jako pakiet 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>

    Aby uzyskać szczegółowe informacje, zobacz dokumentację dotyczącą integracji Iceberg AWS z Apache Spark.

Odczytywanie tabel usługi Databricks za pomocą usługi Snowflake

Poniżej przedstawiono przykład zalecanych ustawień konfiguracji, aby umożliwić usłudze Snowflake odczytywanie tabel usługi Azure Databricks w formacie 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;

Zastąp następujące zmienne:

  • <catalog-integration-name>: nazwa, która ma zostać przypisana do katalogu zarejestrowanego w usłudze Snowflake.
  • <uc-schema-name>: nazwa schematu w Unity Catalog, do którego chcesz uzyskać dostęp.
  • <uc-catalog-name>: nazwa katalogu w Unity Catalog, do którego musisz uzyskać dostęp.
  • <workspace-url>: adres URL obszaru roboczego usługi Azure Databricks.
  • <token>: token PAT dla głównego podmiotu konfigurującego integrację.

Przykład użycia curl w API REST

Możesz również użyć wywołania interfejsu API REST, takiego jak w tym przykładzie curl, aby załadować 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>

Następnie powinna zostać wyświetlona odpowiedź podobna do następującej:

{
  "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>"
  }
}

Notatka

Pole expires-at-ms w odpowiedzi wskazuje czas wygaśnięcia poświadczeń i ma domyślny czas wygaśnięcia jednej godziny. Aby uzyskać lepszą wydajność, klient powinien buforować poświadczenia aż do momentu wygaśnięcia, zanim zażąda nowych.