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
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:
- Włącz dostęp do danych zewnętrznych dla magazynu metadanych. Zobacz Włączanie dostępu do danych zewnętrznych w magazynie metadanych.
- Udziel głównej osobie odpowiedzialnej za konfigurację integracji uprawnienia
EXTERNAL USE SCHEMA
do schematu zawierającego tabele. Zobacz Przyznaj główne ZEWNĘTRZNE USE SCHEMA. - Uwierzytelnianie przy użyciu osobistego tokenu dostępu usługi Databricks. Zobacz Uwierzytelnianie dostępu do zasobów usługi Azure Databricks.
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.
- AWS:
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.