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
Dieses Feature befindet sich in der Public Preview.
Diese Seite enthält Informationen zum Erstellen externer Tabellen im Unity-Katalog, die von Delta Lake von externen Clients und Systemen unterstützt werden.
Hinweis
Databricks empfiehlt die Verwendung von Apache Spark zum Erstellen externer Tabellen, um sicherzustellen, dass Spaltendefinitionen in einem Format vorliegen, das mit Apache Spark kompatibel ist. Die API überprüft nicht die Richtigkeit der Spaltenspezifikation. Wenn die Spezifikation nicht mit Apache Spark kompatibel ist, kann Databricks Runtime die Tabellen möglicherweise nicht lesen.
Anforderungen
Aktivieren Sie den Zugriff auf externe Daten für Ihren Metastore. Siehe Aktivieren des externen Datenzugriffs im Metastore.
Gewähren des Prinzipals, der die Integration der nicht zulässigen Berechtigungen konfiguriert
-
EXTERNAL USE SCHEMABerechtigungen für das Schema, das die Objekte enthält. -
EXTERNAL USE LOCATIONBerechtigungen für den externen Speicherort, der den Pfad enthält. Weitere Informationen finden Sie unter Erteilen von Prinzipalberechtigungen für den Unity-Katalog. -
CREATE TABLEBerechtigung für die Tabelle,CREATE EXTERNAL TABLEam externen Speicherort,USE CATALOGim übergeordneten Katalog undUSE SCHEMAim übergeordneten Schema.
Weitere Informationen finden Sie unter Erteilen von Prinzipalberechtigungen für den Unity-Katalog.
-
Sie können externe Tabellen mit Apache Spark, der Unity-Katalog-API oder anderen externen Clients erstellen.
Erstellen von Delta-Tabellen mit Apache Spark
Im Folgenden finden Sie ein Beispiel für die Einstellungen zum Konfigurieren von Apache Spark zum Erstellen externer Delta-Tabellen im Unity-Katalog:
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.hadoop.fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog",
"spark.sql.catalog.<uc-catalog-name>.token": "<token>",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
Ersetzen Sie die folgenden Variablen:
-
<uc-catalog-name>: Der Name des Katalogs im Unity-Katalog, der Ihre Tabellen enthält. -
<workspace-url>: URL des Azure Databricks-Arbeitsbereichs. -
<token>: OAuth-Token für den Prinzipal, der die Integration konfiguriert.
Damit Apache Spark und Delta Lake mit Unity Catalog zusammenarbeiten können, benötigen Sie mindestens Apache Spark 3.5.3 und Delta Lake 3.2.1.
Schließen Sie beim Starten von Apache Spark die folgenden Abhängigkeiten ein:
--packages "org.apache.hadoop:hadoop-aws:3.3.4,\
io.delta:delta-spark_2.12:3.2.1,\
io.unitycatalog:unitycatalog-spark_2.12:0.2.0"
Jetzt können Sie externe Tabellen mit SQL erstellen:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
Erstellen von Delta-Tabellen mithilfe der API
Führen Sie die folgenden Schritte aus, um eine externe Delta-Tabelle mit der Unity Catalog-REST-API zu erstellen:
Schritt 1: Erstellen einer POST-Anforderung an die Create Table-API
Verwenden Sie die folgende API-Anforderung, um die Tabellenmetadaten im Unity-Katalog zu registrieren:
curl --location --request POST 'https://<workspace-url>/api/2.0/unity-catalog/tables/' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<table-name>",
"catalog_name": "<uc-catalog-name>",
"schema_name": "<schema-name>",
"table_type": "EXTERNAL",
"data_source_format": "DELTA",
"storage_location": "<path>",
"columns": [
{
"name": "id",
"type_name": "LONG",
"type_text": "bigint",
"type_json": "\"long\"",
"type_precision": 0,
"type_scale": 0,
"position": 0,
"nullable": true
},
{
"name": "name",
"type_name": "STRING",
"type_text": "string",
"type_json": "\"string\"",
"type_precision": 0,
"type_scale": 0,
"position": 1,
"nullable": true
}
]
}'
Ersetzen Sie die folgenden Variablen:
-
<workspace-url>: URL des Azure Databricks-Arbeitsbereichs -
<token>: Token für den Prinzipal, der den API-Aufruf vornimmt -
<uc-catalog-name>: Name des Katalogs im Unity-Katalog, der die externe Tabelle enthält -
<schema-name>: Name des Schemas innerhalb des Katalogs, in dem die Tabelle erstellt wird -
<table-name>: Name der externen Tabelle -
<path>: Vollqualifizierter Pfad zu den Tabellendaten
Schritt 2: Initialisieren der Delta-Tabellenposition
Der obige API-Aufruf registriert die Tabelle in :[UC], erstellt aber nicht die Delta-Dateien am Speicherort. Um die Tabellenposition zu initialisieren, schreiben Sie eine leere Delta-Tabelle mit Spark:
Das in diesem Schritt verwendete Schema muss genau mit den Spaltendefinitionen übereinstimmen, die in der API-Anforderung bereitgestellt werden.
from pyspark.sql.types import StructType, StructField, StringType, LongType
# Define schema matching your API call
schema = StructType([
StructField("id", LongType(), True),
StructField("name", StringType(), True)
])
# Create an empty DataFrame and initialize the Delta table
empty_df = spark.createDataFrame([], schema)
empty_df.write \
.format("delta") \
.mode("overwrite") \
.save("<path>")
Hinweis
Die Create Table API für externe Clients hat die folgenden Einschränkungen:
- Nur externe Delta-Tabellen werden unterstützt (
"table_type": "EXTERNAL"und"data_source_format": "DELTA"). - Es sind nur die folgenden Felder zulässig:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- Spaltenformate werden nicht unterstützt.