Přístup k tabulkám Databricks z klientů Delta

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:

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, VACUUMa ANALYZE, 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:

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é:

  • <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:
    • name
    • catalog_name
    • schema_name
    • table_type
    • data_source_format
    • columns
    • storage_location
    • properties
  • Masky sloupců nejsou podporovány.