Kommentar
Å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.
Den här sidan beskriver hur du använder Unity REST API för att skapa, läsa och skriva till hanterade och externa Unity Catalog-tabeller från externa Delta-klienter. En fullständig lista över integreringar som stöds finns i Unity Catalog-integreringar.
Tips
Information om hur du läser Azure Databricks data med Microsoft Fabric finns i Använd Microsoft Fabric för att läsa data som är registrerade i Unity Catalog.
Skapa, läsa och skriva med unity REST API
Viktigt!
Att skapa och skriva till hanterade Unity Catalog-tabeller från Delta-klienter finns i Beta. Stöd för externa klienter är begränsat.
Unity REST-API:et ger externa klienter åtkomst till att skapa, läsa och skriva till tabeller som är registrerade i Unity Catalog. Konfigurera åtkomst med arbetsytans URL som slutpunkt. Följande tabelltyper är tillgängliga:
| Tabelltyp | Läs | Skriv | Create |
|---|---|---|---|
| Kontrollerat delta | Ja | Ja* | Ja* |
| Externt delta | Ja | Ja | Ja |
* Stöds för hanterade Delta-tabeller med katalogkommandon.
Krav
Azure Databricks stöder Unity REST API-åtkomst till tabeller som en del av Unity Catalog. Du måste ha Unity Catalog aktiverat på din arbetsyta för att kunna använda dessa slutpunkter.
Du måste också utföra följande konfigurationssteg för att konfigurera åtkomst till tabeller från Delta-klienter med hjälp av Unity REST API:
- Aktivera extern dataåtkomst för ditt metaarkiv. Se Aktivera åtkomst till externa data i metaarkivet.
- Ge huvudkontot åtkomst till data externt behörigheten
EXTERNAL USE SCHEMAför schemat som innehåller objekten. Se Bevilja en huvudbehörighet för Unity Catalog. - För externa tabeller som nås via sökväg: Bevilja huvudkontot behörigheten
EXTERNAL USE LOCATIONpå den externa plats som innehåller tabellsökvägen. Se Bevilja en huvudbehörighet för Unity Catalog. - Kontrollera att huvudkontot har relevanta behörigheter:
-
SELECTi tabellen för läsningar -
MODIFYpå tabellen för skrivoperationer -
CREATEi schemat för att skapa tabeller - För externa skrivningar till hanterade Delta-tabeller kontrollerar du att den tabell som skrivs till har katalogincheckningar aktiverade.
-
- Autentisera med någon av följande metoder:
- Personlig åtkomsttoken (PAT): Se Godkänn åtkomst till Azure Databricks-resurser.
- M2M-autentisering (OAuth machine-to-machine): Stöder automatisk uppdatering av autentiseringsuppgifter och token för långvariga Spark-jobb (>1 timme). Se även Authorize service principal access to Azure Databricks with OAuth.
Begränsningar
- Extern åtkomst till UniForm-tabeller med IcebergCompatV3 stöds inte för närvarande. När du har skrivit externt till en UniForm-tabell måste du köra
MSCK REPAIR TABLEi Databricks för att generera Iceberg-metadata. - Schemaändringar (till exempel
ALTER TABLE), uppdateringar av tabellegenskap och ändringar av tabellfunktioner stöds för närvarande inte i hanterade tabeller från externa klienter. - Externa klienter kan inte utföra tabellunderhållsåtgärder, till exempel
OPTIMIZE,VACUUMochANALYZE, i hanterade Delta-tabeller. - Externa klienter kan inte skapa grunda kloner.
- Externa klienter kan inte skapa tabeller med genererade kolumner, standardkolumner eller villkorskolumner.
- När du skapar externa tabeller rekommenderar Azure Databricks att du använder Apache Spark 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.
Få åtkomst till Delta-tabeller med Apache Spark med hjälp av PAT-autentisering
Följande konfiguration krävs för att läsa eller skriva till hanterade och externa Delta-tabeller i Unity Catalog med Apache Spark med hjälp av PAT-autentisering:
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>",
"spark.sql.catalog.<uc-catalog-name>.token": "<token>",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.jars.packages": "io.delta:delta-spark_4.1_2.13:4.2.0,io.unitycatalog:unitycatalog-spark_2.13:0.4.1,org.apache.hadoop:hadoop-azure:3.4.2"
Ersätt följande variabler:
-
<uc-catalog-name>: Namnet på katalogen i Unity Catalog som innehåller dina tabeller. -
<token>: Personlig åtkomsttoken (PAT) för den huvudansvarige som konfigurerar integrationen.
-
<workspace-url>: URL:en för Azure Databricks arbetsyta, inklusive arbetsyte-ID:t. Till exempeladb-1234567890123456.12.azuredatabricks.net.
Anmärkning
Paketversionerna som visas ovan är aktuella från och med den senaste uppdateringen av den här sidan. Nyare versioner kan vara tillgängliga. Kontrollera att paketversionerna är kompatibla med din Spark-version.
Mer information om hur du konfigurerar Apache Spark för molnobjektlagring finns i DOKUMENTATIONen om Unity Catalog OSS.
Viktigt!
Databricks Runtime 16.4 och senare krävs för att läsa från, skriva till eller skapa tabeller med katalogkommittér aktiverade. Databricks Runtime 18.0 och senare krävs för att aktivera eller inaktivera katalogändringar i befintliga tabeller.
Om du vill skapa hanterade Delta-tabeller med katalogincheckningar använder du följande SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;
Om du vill skapa externa Delta-tabeller använder du följande SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
Få åtkomst till Delta-tabeller med Apache Spark med OAuth-autentisering
Azure Databricks stöder även OAuth-autentisering från dator till dator (M2M). OAuth hanterar automatiskt förnyelse av token och autentiseringsuppgifter för Unity Catalog-autentisering.
OAuth-autentisering för externa Spark-klienter kräver:
- Unity Catalog Spark-klientversion 0.4.1 eller senare (
io.unitycatalog:unitycatalog-spark) - Apache Spark 4.0 eller senare
- Delta Spark 4.2.0 eller senare
- Ett OAuth M2M-service principal med lämpliga behörigheter. Se även Authorize service principal access to Azure Databricks with OAuth.
Följande konfiguration krävs för att skapa, läsa eller skriva till hanterade Unity Catalog-tabeller och externa Delta-tabeller med Apache Spark med OAuth-autentisering:
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>",
"spark.sql.catalog.<uc-catalog-name>.auth.type": "oauth",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientId": "<oauth-client-id>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientSecret": "<oauth-client-secret>",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.jars.packages": "io.delta:delta-spark_4.1_2.13:4.2.0,io.unitycatalog:unitycatalog-spark_2.13:0.4.1,org.apache.hadoop:hadoop-azure:3.4.2"
Ersätt följande variabler:
-
<uc-catalog-name>: Namnet på katalogen i Unity Catalog som innehåller dina tabeller. -
<oauth-token-endpoint>: URL för OAuth-tokenslutpunkt. Så här skapar du den här URL:en:- Leta upp ditt Azure Databricks konto-ID. Se Hitta ditt konto-ID.
- Använd formatet:
https://accounts.cloud.databricks.com/oidc/accounts/<account-id>/v1/token
-
<oauth-client-id>: OAuth-klient-ID för din serviceprincipal. Se även Authorize service principal access to Azure Databricks with OAuth. -
<oauth-client-secret>: OAuth-klienthemlighet för din tjänsthuvudman. Se även Authorize service principal access to Azure Databricks with OAuth.
-
<workspace-url>: URL:en för Azure Databricks arbetsyta, inklusive arbetsyte-ID:t. Till exempeladb-1234567890123456.12.azuredatabricks.net.
Anmärkning
Paketversionerna som visas ovan är aktuella från och med den senaste uppdateringen av den här sidan. Nyare versioner kan vara tillgängliga. Kontrollera att paketversionerna är kompatibla med din Spark-version.
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 den 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.