Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Unity Catalog Apache Iceberg REST Catalog API befindet sich in der öffentlichen Vorschau in Databricks Runtime 16.4 LTS und höher. Dieser Endpunkt wird zum Lesen und Schreiben von Tabellen von Iceberg-Clients empfohlen.
Unity Catalog verfügt auch über einen schreibgeschützten Iceberg REST-Katalog-API-Endpunkt. Dies ist ein veralteter Endpunkt. Siehe Read Databricks-Tabellen von Apache Iceberg-Clients (Legacy).
Mit dem Apache Iceberg REST-Katalog können unterstützte Clients wie Apache Spark, Apache Flink und Trino in Unity Catalog registrierte Iceberg-Tabellen auf Azure Databricks lesen und schreiben.
Eine vollständige Liste der unterstützten Integrationen finden Sie unter Unity Catalog-Integrationen.
Verwenden des Unity Catalog Iceberg-Katalogendpunkts
Unity Catalog stellt eine Implementierung der Iceberg REST-Katalog-API-Spezifikation bereit.
Konfigurieren des Zugriffs mithilfe des Endpunkts /api/2.1/unity-catalog/iceberg-rest. Details zur Verwendung dieser REST-API finden Sie in der Iceberg REST API-Spezifikation.
Hinweis
Azure Databricks hat für einige Iceberg-Leserclients den Verkauf von Anmeldeinformationen eingeführt. Databricks empfiehlt, den Verkauf von Anmeldeinformationen zum Steuern des Zugriffs auf Cloudspeicherorte für unterstützte Systeme zu nutzen. Weitere Informationen finden Sie unter Verkauf von Unity Catalog-Anmeldeinformationen für den Zugriff auf externe Systeme.
Wenn das Bereitstellen von Anmeldeinformationen für Ihren Client nicht unterstützt wird, müssen Sie den Zugriff vom Client auf den Speicherort konfigurieren, der die Dateien und Metadaten für die Delta- oder Iceberg-Tabelle enthält. Weitere Informationen zur Konfiguration finden Sie in der Dokumentation ihres Iceberg-Clients.
Anforderungen
Azure Databricks unterstützt den Iceberg REST-Katalogzugriff auf Tabellen als Teil des Unity-Katalogs. Sie müssen den Unity-Katalog in Ihrem Arbeitsbereich aktiviert haben, um diese Endpunkte zu verwenden. Auf die folgenden Tabellentypen kann über den Iceberg REST-Katalog zugegriffen werden:
| Thema | Lesen Sie | Schreiben |
|---|---|---|
| Verwalteter Iceberg | Ja | Ja |
| Fremde Eisberge | Ja | Nein |
| Verwaltetes Delta (mit aktiviertem Iceberg-Lesemodus) | Ja | Nein |
| Externes Delta (mit aktiviertem Iceberg-Lesemodus) | Ja | Nein |
Ausländische Iceberg-Tabellen werden beim Lesen über die Iceberg REST-Katalog-API nicht automatisch aktualisiert. Zum Aktualisieren müssen Sie REFRESH FOREIGN TABLE ausführen, um die neueste Momentaufnahme zu lesen. Der Verkauf von Anmeldeinformationen in ausländischen Iceberg-Tabellen wird nicht unterstützt.
Hinweis
Sie müssen Delta-Tabellen so konfigurieren, dass sie über die Iceberg REST-Katalog-API zugänglich sind. Siehe Lesen von Delta-Tabellen mit Iceberg-Clients.
Sie müssen die folgenden Konfigurationsschritte ausführen, um den Zugriff auf Lese- oder Schreibzugriff auf Azure Databricks-Tabellen von Iceberg-Clients mithilfe des Iceberg-REST-Katalogs zu konfigurieren:
- Aktivieren Sie den Zugriff auf externe Daten für Ihren Metastore. Siehe Aktivieren des externen Datenzugriffs im Metastore.
- Gewähren Sie dem Prinzipal, der die Integration konfiguriert, das
EXTERNAL USE SCHEMAPrivileg für das Schema, das die Tabellen enthält. Weitere Informationen finden Sie unter Erteilen von Prinzipalberechtigungen für den Unity-Katalog. - Authentifizieren sie sich mithilfe eines persönlichen Azure Databricks-Zugriffstokens oder OAuth. Siehe Autorisieren des Zugriffs auf Azure Databricks-Ressourcen.
Verwenden von Iceberg-Tabellen mit Apache Spark
Nachfolgend finden Sie ein Beispiel zum Konfigurieren von Apache Spark für den Zugriff auf Azure Databricks-Tabellen über die Iceberg REST-Katalog-API mit OAuth-Authentifizierung:
"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"
Ersetzen Sie die folgenden Variablen:
-
<uc-catalog-name>: Der Name des Katalogs im Unity-Katalog, der Ihre Tabellen enthält. -
<spark-catalog-name>: Der Name, den Sie dem Katalog in Ihrer Spark-Sitzung zuweisen möchten. -
<workspace-url>: Die Azure Databricks-Arbeitsbereichs-URL. -
<oauth_client_id>: OAuth-Client-ID für den authentifizierenden Prinzipal. -
<oauth_client_secret>: Geheimer OAuth-Clientschlüssel für den authentifizierenden Prinzipal.
Mit diesen Konfigurationen können Sie Tabellen im Unity-Katalog mithilfe von Apache Spark abfragen. Um auf Tabellen in mehreren Katalogen zuzugreifen, müssen Sie jeden Katalog separat konfigurieren.
Beachten Sie beim Abfragen von Tabellen im Unity-Katalog mithilfe von Spark-Konfigurationen Folgendes:
Sie brauchen
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"nur dann, wenn Sie Iceberg-spezifische gespeicherte Prozeduren ausführen.Azure Databricks verwendet Cloudobjektspeicher für alle Tabellen. Sie müssen die Iceberg-Spark-runtime JAR-Datei als Spark-Pakete hinzufügen.
- AWS:
org.apache.iceberg:iceberg-aws-bundle:<iceberg-version> - Azurblau:
org.apache.iceberg:iceberg-azure-bundle:<iceberg-version> - GCP:
org.apache.iceberg:iceberg-gcp-bundle:<iceberg-version>
Ausführliche Informationen finden Sie in der Dokumentation zur Iceberg AWS-Integration für Spark.
Hinweis
Diese Konfigurationen sind beim Zugriff auf Iceberg-Tabellen aus Azure Databricks nicht erforderlich. Das Laden externer Iceberg-JARs auf Azure Databricks-Cluster wird nicht unterstützt.
- AWS:
Zugreifen auf Azure Databricks-Tabellen mit Snowflake
Im Folgenden sehen Sie ein Beispiel für die Konfigurationseinstellungen für Snowflake für den Zugriff auf Azure Databricks-Tabellen, indem Sie eine Verbindung mit dem Iceberg REST-Katalog im Unity-Katalog herstellen:
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;
Ersetzen Sie die folgenden Variablen:
-
<catalog-integration-name>: Der Name, den Sie dem Katalog zuweisen möchten, der bei Snowflake registriert ist. -
<uc-schema-name>: Der Name des Schemas im Unity-Katalog, auf das Sie zugreifen müssen. -
<uc-catalog-name>: Der Name des Katalogs im Unity-Katalog, auf den Sie zugreifen müssen. -
<workspace-url>: Die Azure Databricks-Arbeitsbereichs-URL. -
<token>: PAT-Token für den Hauptbenutzer, der die Integration konfiguriert.
Verwenden von Azure Databricks-Tabellen mit PyIceberg
Nachfolgend sehen Sie ein Beispiel für die Konfigurationseinstellungen, mit denen PyIceberg auf Azure Databricks-Tabellen zugreifen kann, indem Sie eine Verbindung mit dem Iceberg REST-Katalog im Unity-Katalog herstellen:
catalog:
unity_catalog:
uri: https://<workspace-url>/api/2.1/unity-catalog/iceberg-rest
warehouse: <uc-catalog-name>
token: <token>
Ersetzen Sie die folgenden Variablen:
-
<workspace-url>: Die Azure Databricks-Arbeitsbereichs-URL. -
<uc-catalog-name>: Der Name des Katalogs im Unity-Katalog, auf den Sie zugreifen müssen. -
<token>: PAT-Token für den Hauptbenutzer, der die Integration konfiguriert.
Weitere Informationen finden Sie in der Dokumentation zur Konfiguration des PYIceberg REST-Katalogs.
Beispiel für REST-API-Curl
Sie können auch einen REST-API-Aufruf wie den in diesem curl Beispiel verwenden, um eine Tabelle zu laden:
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>
Sie sollten dann wie folgt eine Antwort erhalten:
{
"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>"
}
}
Hinweis
Das Feld expires-at-ms in der Antwort gibt die Ablaufzeit der Anmeldeinformationen an und weist eine Standardablaufzeit von einer Stunde auf. Um eine bessere Leistung zu erzielen, sollte der Kunde die Zugangsdaten bis zum Ablauf zwischenspeichern, bevor er neue anfordert.