Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Interfejs API katalogu REST Unity Catalog Apache Iceberg jest w wersji Public Preview w wersjach Databricks Runtime 16.4 LTS i nowszych. Ten endpoint jest zalecany do odczytywania i zapisywania w tabelach przez klientów Iceberg.
Unity Catalog ma również punkt końcowy API REST tylko do odczytu Iceberg. Jest to starszy punkt końcowy. Zobacz Odczytywanie tabel usługi Databricks z klientów platformy Apache Iceberg (starsza wersja).
Katalog REST usługi Apache Iceberg umożliwia obsługiwanym klientom, takim jak Apache Spark, Apache Flink i Trino, odczytywanie i zapisywanie w tabelach Iceberg zarejestrowanych w Unity Catalog w usłudze Azure Databricks.
Aby uzyskać pełną listę obsługiwanych integracji, zobacz Integracje Unity Catalog.
Użyj punktu końcowego katalogu Iceberg Unity Catalog
Unity Catalog zapewnia implementację specyfikacji API katalogu REST Iceberg.
Skonfiguruj dostęp przy użyciu punktu końcowego /api/2.1/unity-catalog/iceberg-rest. 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, musisz skonfigurować dostęp z klienta do lokalizacji przechowywania zawierającej pliki i metadane dla tabeli Delta lub Iceberg. Aby uzyskać szczegółowe informacje o konfiguracji, zapoznaj się z dokumentacją klienta platformy Iceberg.
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 są dostępne za pośrednictwem Katalogu REST Iceberg:
| Temat | Przeczytaj | Napisz |
|---|---|---|
| Zarządzana góra lodowa | Tak | Tak |
| Zagraniczna góra lodowa | Tak | Nie. |
| Zarządzana Delta (z włączonym odczytem Iceberg) | Tak | Nie. |
| Delta zewnętrzna (z włączoną funkcją odczytu Iceberg) | Tak | Nie. |
Zewnętrzne tabele Iceberg nie są automatycznie odświeżane podczas odczytywania za pośrednictwem API katalogu REST Iceberg. Aby odświeżyć, należy uruchomić polecenie REFRESH FOREIGN TABLE , aby odczytać najnowszą migawkę. Dystrybucja poświadczeń na zagranicznych stołach Iceberg nie jest obsługiwana.
Notatka
Tabele Delta należy skonfigurować tak, aby były dostępne za pośrednictwem interfejsu API wykazu REST Iceberg. Zobacz Odczytywanie tabel Delta za pomocą klientów Iceberg.
Należy wykonać następujące kroki konfiguracji, aby skonfigurować dostęp do odczytu lub zapisu w tabelach usługi Azure Databricks z klientów Góry lodowej 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 SCHEMAdo schematu zawierającego tabele. Zobacz Jak nadawać uprawnienia w Unity Catalog dla głównych podmiotów. - Uwierzytelnianie przy użyciu osobistego tokenu dostępu usługi Azure Databricks lub protokołu OAuth. Zobacz Autoryzowanie dostępu do zasobów usługi Azure Databricks.
Używanie tabel Iceberg z Apache Spark
Poniżej przedstawiono przykład konfigurowania platformy Apache Spark w celu uzyskiwania dostępu do tabel usługi Azure Databricks za pośrednictwem interfejsu API wykazu REST platformy Iceberg przy użyciu uwierzytelniania OAuth:
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
# Configuration for accessing 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>.rest.auth.type": "oauth2",
"spark.sql.catalog.<spark-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg-rest",
"spark.sql.catalog.<spark-catalog-name>.oauth2-server-uri": "<workspace-url>/oidc/v1/token",
"spark.sql.catalog.<spark-catalog-name>.credential":"<oauth_client_id>:<oauth_client_secret>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<uc-catalog-name>"
"spark.sql.catalog.<spark-catalog-name>.scope":"all-apis"
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. -
<oauth_client_id>: identyfikator klienta OAuth dla głównego uwierzytelnianego podmiotu. -
<oauth_client_secret>: hasło tajne klienta OAuth dla podmiotu uwierzytelniającego.
Te konfiguracje umożliwiają wykonywanie zapytań w tabelach w katalogu Unity przy użyciu Apache Spark. 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ć JAR iceberg-spark-runtime jako pakiety programu Spark.
- AWS:
org.apache.iceberg:iceberg-aws-bundle:<iceberg-version> - Błękit:
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.
Notatka
Te konfiguracje nie są wymagane podczas uzyskiwania dostępu do tabel Iceberg z usługi Azure Databricks. Ładowanie zewnętrznych plików JAR Iceberg do klastrów Azure Databricks nie jest obsługiwane.
- AWS:
Uzyskiwanie dostępu do tabel usługi Azure Databricks za pomocą rozwiązania Snowflake
Poniżej przedstawiono przykład ustawień konfiguracji usługi Snowflake w celu uzyskania dostępu do tabel usługi Azure Databricks przez nawiązanie połączenia z wykazem REST platformy Iceberg w wykazie aparatu Unity:
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-rest',
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ę.
Używanie tabel usługi Azure Databricks z rozwiązaniem PyIceberg
Poniżej przedstawiono przykład ustawień konfiguracji umożliwiających narzędziu PyIceberg uzyskanie dostępu do tabel platformy Azure Databricks przez nawiązanie połączenia z Katalogiem REST Iceberg w katalogu Unity:
catalog:
unity_catalog:
uri: https://<workspace-url>/api/2.1/unity-catalog/iceberg-rest
warehouse: <uc-catalog-name>
token: <token>
Zastąp następujące zmienne:
-
<workspace-url>: adres URL obszaru roboczego usługi Azure Databricks. -
<uc-catalog-name>: nazwa katalogu w Unity Catalog, do którego musisz uzyskać dostęp. -
<token>: token PAT dla głównego podmiotu konfigurującego integrację.
Zapoznaj się z dokumentacją konfiguracji katalogu REST PyIceberg.
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 "Authorization: Bearer $OAUTH_TOKEN" -H "Accept: application/json" \
https://<workspace-instance>/api/2.1/unity-catalog/iceberg-rest/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.