Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka popisuje, jak pomocí rozhraní Unity REST API vytvářet, číst a zapisovat do katalogu Unity spravované a externí tabulky z externích klientů Delta. Úplný seznam podporovaných integrací najdete v tématu Integrace katalogu Unity.
Spropitné
Informace o tom, jak číst Azure Databricks data pomocí Microsoft Fabric, najdete v tématu Použití Microsoft Fabric ke čtení dat registrovaných v katalogu Unity.
Vytvoření, čtení a zápis pomocí rozhraní Unity REST API
Důležité
Vytváření a zápis do spravovaných tabulek katalogu Unity z klientů Delta je v beta verzi. Podpora externích klientů je omezená.
Rozhraní Unity REST API poskytuje externím klientům přístup k vytváření, čtení a zápisu k tabulkám registrovaným v katalogu Unity. Nakonfigurujte přístup pomocí adresy URL pracovního prostoru jako koncového bodu. K dispozici jsou následující typy tabulek:
| Typ tabulky | Čti | Napiš | Create |
|---|---|---|---|
| Spravovaný Delta | Ano | Ano* | Ano* |
| Externí delta | Ano | Ano | Ano |
* Podporováno pro spravované tabulky Delta s potvrzeními katalogu.
Požadavky
Azure Databricks podporuje přístup rozhraní Unity REST API k tabulkám jako součást katalogu Unity. Abyste mohli tyto koncové body používat, musíte mít ve svém pracovním prostoru povolený katalog Unity.
Pro konfiguraci přístupu k tabulkám z klientů Delta pomocí rozhraní Unity REST API musíte také provést následující kroky konfigurace:
- Povolte pro metastor přístup k externím datům. Vizte Povolení přístupu k externím datům nametastoru.
- Udělete subjektu, který přistupuje k datům externě,
EXTERNAL USE SCHEMAoprávnění ke schématu obsahujícímu objekty. Viz Udělení oprávnění hlavního katalogu Unity. - U externích tabulek přístupných cestou: Udělte hlavnímu subjektu
EXTERNAL USE LOCATIONoprávnění k externímu umístění obsahujícímu cestu k tabulce. Viz Udělení oprávnění hlavního katalogu Unity. - Ujistěte se, že má objekt zabezpečení příslušná oprávnění:
-
SELECTv tabulce pro čtení -
MODIFYna tabulce pro zápisy -
CREATEve schématu pro vytvoření tabulky - U externích zápisů do spravovaných tabulek Delta ověřte, že má tabulka, do které zapisujete, povolená potvrzení katalogu.
-
- Ověřte se pomocí jedné z následujících metod:
- osobní přístupový token (PAT): viz Authorize access to Azure Databricks resources.
- Ověřování OAuth typu machine-to-machine (M2M): Podporuje automatické přihlašovací údaje a aktualizaci tokenů pro dlouhotrvající úlohy Sparku (>1 hodinu). Viz Autorizujte přístup instančního objektu k Azure Databricks pomocí OAuth.
Omezení
- Externí přístup k tabulkám UniForm s icebergCompatV3 se v současné době nepodporuje. Po externím zápisu do tabulky UniForm musíte v Databricks spustit
MSCK REPAIR TABLE, aby se vygenerovala metadata Icebergu. - Změny schématu (například
ALTER TABLE), aktualizace vlastností tabulky a změny funkcí tabulky se v současné době nepodporují u spravovaných tabulek z externích klientů. - Externí klienti nemůžou provádět operace údržby tabulek, například
OPTIMIZE,VACUUMaANALYZE, ve spravovaných tabulkách Delta. - Externí klienti nemohou vytvářet mělké klony.
- Externí klienti nemůžou vytvářet tabulky s vygenerovanými sloupci, výchozími sloupci ani sloupci omezení.
- Při vytváření externích tabulek Azure Databricks doporučuje použít Apache Spark, aby se zajistilo, že definice sloupců jsou ve formátu kompatibilním s Apache Sparkem. Rozhraní API neověřuje správnost specifikace sloupce. Pokud specifikace není kompatibilní s Apache Sparkem, nemusí databricks Runtime číst tabulky.
Přístup k tabulkám Delta pomocí Apache Sparku pomocí ověřování PAT
Ke čtení nebo zápisu do spravovaných a externích tabulek Delta s Apache Sparkem pomocí ověřování PAT se vyžaduje následující konfigurace:
"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"
Nahraďte následující proměnné:
-
<uc-catalog-name>: Název katalogu Unity, který obsahuje tabulky. -
<token>: Osobní přístupový token (PAT) pro subjekt konfigurovaný pro integraci.
-
<workspace-url>: Adresa URL Azure Databricks workspace, včetně ID pracovního prostoru. Například:adb-1234567890123456.12.azuredatabricks.net.
Poznámka:
Výše uvedené verze balíčků jsou aktuální od poslední aktualizace této stránky. Novější verze můžou být dostupné. Ověřte, že verze balíčků jsou kompatibilní s vaší verzí Sparku.
Další podrobnosti o konfiguraci Apache Sparku pro cloudové úložiště objektů najdete v dokumentaci k operačnímu systému Unity.
Důležité
Pro používání funkcí čtení, zápisu nebo vytváření tabulek s povolenými potvrzeními katalogu je vyžadován Databricks Runtime ve verzi 16.4 nebo vyšší. Databricks Runtime 18.0 a vyšší se vyžaduje k povolení nebo zakázání potvrzení katalogu u existujících tabulek.
Pokud chcete vytvořit spravované tabulky Delta s potvrzeními katalogu, použijte následující SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;
K vytvoření externích tabulek Delta použijte následující sql:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
Přístup k tabulkám Delta pomocí Apache Sparku pomocí ověřování OAuth
Azure Databricks také podporuje ověřování OAuth typu machine-to-machine (M2M). OAuth automaticky zpracovává tokeny a obnovu přihlašovacích údajů pro ověřování katalogu Unity.
Ověřování OAuth pro externí klienty Sparku vyžaduje:
- Klient Unity Catalog Spark verze 0.4.1 nebo novější (
io.unitycatalog:unitycatalog-spark) - Apache Spark 4.0 nebo novější
- Delta Spark 4.2.0 nebo novější
- Hlavní služba OAuth M2M s příslušnými oprávněními. Viz Autorizujte přístup instančního objektu k Azure Databricks pomocí OAuth.
K vytvoření, čtení nebo zápisu do spravovaných tabulek Unity a externích tabulek Delta s Apache Sparkem pomocí ověřování OAuth se vyžaduje následující konfigurace:
"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"
Nahraďte následující proměnné:
-
<uc-catalog-name>: Název katalogu Unity, který obsahuje tabulky. -
<oauth-token-endpoint>: Adresa URL koncového bodu tokenu OAuth. Vytvoření této adresy URL:- Vyhledejte ID Azure Databricks účtu. Viz Vyhledání ID účtu.
- Použijte formát:
https://accounts.cloud.databricks.com/oidc/accounts/<account-id>/v1/token
-
<oauth-client-id>: ID klienta OAuth pro služební principál. Viz Autorizujte přístup instančního objektu k Azure Databricks pomocí OAuth. -
<oauth-client-secret>: OAuth klientský tajný klíč pro váš Service Principal. Viz Autorizujte přístup instančního objektu k Azure Databricks pomocí OAuth.
-
<workspace-url>: Adresa URL Azure Databricks workspace, včetně ID pracovního prostoru. Například:adb-1234567890123456.12.azuredatabricks.net.
Poznámka:
Výše uvedené verze balíčků jsou aktuální od poslední aktualizace této stránky. Novější verze můžou být dostupné. Ověřte, že verze balíčků jsou kompatibilní s vaší verzí Sparku.
Vytvoření tabulek Delta pomocí rozhraní API
Pokud chcete vytvořit externí tabulku Delta pomocí rozhraní REST API katalogu Unity, postupujte takto:
Krok 1: Vytvoření požadavku POST do rozhraní API pro vytvoření tabulky
Pomocí následujícího požadavku rozhraní API zaregistrujte metadata tabulky v katalogu Unity:
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
}
]
}'
Nahraďte následující proměnné:
-
<workspace-url>: Adresa URL pracovního prostoru Azure Databricks -
<token>: Token pro subjekt, který volá rozhraní API -
<uc-catalog-name>: Název katalogu v katalogu Unity, který bude obsahovat externí tabulku -
<schema-name>: Název schématu v katalogu, ve kterém se vytvoří tabulka -
<table-name>: Název externí tabulky -
<path>: Plně kvalifikovaná cesta k datům tabulky
Krok 2: Inicializace umístění tabulky Delta
Výše uvedená volání rozhraní API zaregistruje tabulku v :[UC], ale nevytvoří soubory Delta v umístění úložiště. Pokud chcete inicializovat umístění tabulky, napište prázdnou tabulku Delta pomocí Sparku:
Schéma použité v tomto kroku musí přesně odpovídat definicům sloupců zadaným v požadavku rozhraní API.
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>")
Poznámka:
Rozhraní API pro vytvoření tabulky pro externí klienty má následující omezení:
- Podporují se pouze externí tabulky Delta (
"table_type": "EXTERNAL"a"data_source_format": "DELTA"). - Jsou povolena pouze následující pole:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- Masky sloupců nejsou podporovány.