Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Den här sidan innehåller information om hur du skapar externa Unity Catalog-tabeller som backas upp av Delta Lake från externa klienter och system.
Anmärkning
Databricks rekommenderar att du använder Apache Spark för att skapa externa tabeller för att säkerställa att kolumndefinitionerna är i ett format som är kompatibelt med Apache Spark. API:et verifierar inte att kolumnspecifikationen är korrekt. Om specifikationen inte är kompatibel med Apache Spark kanske Databricks Runtime inte kan läsa tabellerna.
Kravspecifikation
Aktivera extern dataåtkomst för ditt metaarkiv. Se Aktivera åtkomst till externa data i metaarkivet.
Ge huvudanvändaren som konfigurerar integreringen följande behörigheter
-
EXTERNAL USE SCHEMAbehörighet för schemat som innehåller objekten. -
EXTERNAL USE LOCATIONbehörighet till den externa platsen som innehåller sökvägen. Se Bevilja en huvudbehörighet för Unity Catalog. -
CREATE TABLEbehörighet i tabellen,CREATE EXTERNAL TABLEpå den externa platsen,USE CATALOGi den överordnade katalogen ochUSE SCHEMApå dess överordnade schema.
-
Du kan skapa externa tabeller med Apache Spark, Unity Catalog-API:et eller andra externa klienter.
Skapa Delta-tabeller med Apache Spark
Följande är ett exempel på inställningarna för att konfigurera Apache Spark för att skapa externa Delta-tabeller i Unity Catalog:
"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>",
Ersätt följande variabler:
-
<uc-catalog-name>: Namnet på katalogen i Unity Catalog som innehåller dina tabeller. -
<workspace-url>: URL för Azure Databricks-arbetsytan. -
<token>: OAuth-token för det huvudnamn som konfigurerar integreringen.
För att Apache Spark och Delta Lake ska fungera tillsammans med Unity Catalog behöver du minst Apache Spark 3.5.3 och Delta Lake 3.2.1.
Inkludera följande beroenden när du startar Apache Spark:
--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"
Nu kan du skapa externa tabeller med HJÄLP av SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
Skapa Delta-tabeller med hjälp av API:et
Följ dessa steg för att skapa en extern Delta-tabell med rest-API:et för Unity Catalog:
Steg 1: Skicka en POST-begäran till API:et Skapa tabell
Använd följande API-begäran för att registrera tabellmetadata i Unity Catalog:
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
}
]
}'
Ersätt följande variabler:
-
<workspace-url>: URL för Azure Databricks-arbetsytan -
<token>: Token för huvudkontot som gör API-anropet -
<uc-catalog-name>: Namnet på katalogen i Unity Catalog som ska innehålla den externa tabellen -
<schema-name>: Namnet på schemat i katalogen där tabellen ska skapas -
<table-name>: Namnet på den externa tabellen -
<path>: Fullständigt kvalificerad sökväg till tabelldata
Steg 2: Initiera deltatabellens plats
API-anropet ovan registrerar tabellen i :[UC], men den skapar inte Delta-filerna på lagringsplatsen. Om du vill initiera tabellplatsen skriver du en tom Delta-tabell med Spark:
Schemat som används i det här steget måste exakt matcha kolumndefinitionerna som anges i API-begäran.
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>")
Anmärkning
Skapa tabell-API för externa klienter har följande begränsningar:
- Endast externa Delta-tabeller stöds (
"table_type": "EXTERNAL"och"data_source_format": "DELTA"). - Endast följande fält tillåts:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- Kolumnmasker stöds inte.