Udostępnij za pośrednictwem


Uzyskiwanie dostępu do tabel usługi Databricks przez klientów Delta

Na tej stronie opisano sposób używania interfejsu API REST Unity do tworzenia, odczytywania i zapisywania w zarządzanych i zewnętrznych tabelach Unity Catalog z zewnętrznych klientów Delta. Aby uzyskać pełną listę obsługiwanych integracji, zobacz Integracje Unity Catalog.

Tip

Aby uzyskać informacje na temat odczytywania danych z Azure Databricks za pomocą Microsoft Fabric, zobacz Użyj Microsoft Fabric do odczytywania danych zarejestrowanych w katalogu Unity.

Tworzenie, odczytywanie i zapisywanie za pomocą Unity REST API

Ważna

Tworzenie i zapisywanie w tabelach zarządzanych przez Unity Catalog z klientów Delta jest dostępne w wersji beta. Obsługa klienta zewnętrznego jest ograniczona.

Interfejs API REST Unity zapewnia klientom zewnętrznym możliwość tworzenia, odczytywania i zapisywania danych w tabelach zarejestrowanych w Unity Catalog. Skonfiguruj dostęp przy użyciu adresu URL obszaru roboczego jako punktu końcowego. Dostępne są następujące typy tabel:

Typ tabeli Przeczytaj Napisz Create
Zarządzana delta Yes Tak* Tak*
Zewnętrzna delta Yes Yes Yes

* Obsługiwane w przypadku zarządzanych tabel Delta z zatwierdzeniami katalogowymi.

Wymagania

Azure Databricks obsługuje dostęp do tabel poprzez REST API Unity w ramach Unity Catalog. Aby korzystać z tych punktów końcowych, musisz mieć włączony katalog Unity w Twoim obszarze roboczym.

Należy również wykonać poniższe kroki konfiguracyjne, aby skonfigurować dostęp do tabel z klientów Delta za pomocą interfejsu REST API Unity:

Ograniczenia

  • Dostęp zewnętrzny do tabel UniForm z icebergCompatV3 nie jest obecnie obsługiwany. Po zewnętrznym zapisaniu do tabeli UniForm należy uruchomić polecenie MSCK REPAIR TABLE w Databricks, aby wygenerować metadane Iceberg.
  • Zmiany schematu (na przykład ALTER TABLE), aktualizacje właściwości tabeli i zmiany funkcji tabeli nie są obecnie obsługiwane w tabelach zarządzanych od klientów zewnętrznych.
  • Klienci zewnętrzni nie mogą wykonywać operacji konserwacji tabel, takich jak OPTIMIZE, VACUUMi ANALYZE, w zarządzanych tabelach delty.
  • Klienci zewnętrzni nie mogą tworzyć płytkich klonów.
  • Klienci zewnętrzni nie mogą tworzyć tabel z wygenerowanymi kolumnami, kolumnami domyślnymi lub kolumnami ograniczeń.
  • Podczas tworzenia tabel zewnętrznych Azure Databricks zaleca korzystanie z platformy Apache Spark, aby upewnić się, że definicje kolumn są w formacie zgodnym z platformą Apache Spark. Interfejs API nie weryfikuje poprawności specyfikacji kolumny. Jeśli specyfikacja nie jest zgodna z platformą Apache Spark, środowisko Databricks Runtime może nie być w stanie odczytać tabel.

Uzyskiwanie dostępu do tabel delta za pomocą platformy Apache Spark przy użyciu uwierzytelniania przy użyciu tokenu PAT

Następująca konfiguracja jest wymagana do odczytu lub zapisu w zarządzanych i zewnętrznych tabelach Delta Unity Catalog przy użyciu Apache Spark oraz uwierzytelniania PAT.

"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"

Zastąp następujące zmienne:

  • <uc-catalog-name>: nazwa katalogu w Unity Catalog, który zawiera twoje tabele.
  • <token>: Osobisty token dostępu (PAT) dla głównego podmiotu konfigurującego integrację.
  • <workspace-url>: URL obszaru roboczego Azure Databricks, w tym identyfikator obszaru roboczego. Na przykład adb-1234567890123456.12.azuredatabricks.net.

Uwaga / Notatka

Wersje pakietów pokazane powyżej są aktualne od ostatniej aktualizacji tej strony. Nowsze wersje mogą być dostępne. Sprawdź, czy wersje pakietów są zgodne z wersją platformy Spark.

Aby uzyskać dodatkowe szczegóły dotyczące konfigurowania Apache Spark dla magazynu obiektów w chmurze, zobacz dokumentację Unity Catalog OSS.

Ważna

Środowisko Databricks Runtime w wersji 16.4 lub nowszej jest wymagane do odczytu, zapisu do tabel lub ich tworzenia z włączonymi zatwierdzeniami katalogu. Środowisko Databricks Runtime 18.0 lub nowsze jest wymagane do włączenia lub wyłączenia zatwierdzeń katalogu w istniejących tabelach.

Aby utworzyć zarządzane tabele Delta z zatwierdzeniami katalogu, użyj następującego kodu SQL:

CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;

Aby utworzyć zewnętrzne tabele delty, użyj następującego kodu SQL:

CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;

Uzyskiwanie dostępu do tabel delty za pomocą platformy Apache Spark przy użyciu uwierzytelniania OAuth

Azure Databricks obsługuje również uwierzytelnianie maszynowo-maszynowe OAuth (M2M). OAuth automatycznie obsługuje odnawianie tokenu i poświadczeń do uwierzytelniania w Unity Catalog.

Uwierzytelnianie OAuth dla zewnętrznych klientów platformy Spark wymaga:

Następująca konfiguracja jest wymagana do tworzenia, odczytu lub zapisu w tabelach zarządzanych w katalogu Unity oraz zewnętrznych tabeli Delta z użyciem Apache Spark przy użyciu uwierzytelniania OAuth.

"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"

Zastąp następujące zmienne:

  • <workspace-url>: URL obszaru roboczego Azure Databricks, w tym identyfikator obszaru roboczego. Na przykład adb-1234567890123456.12.azuredatabricks.net.

Uwaga / Notatka

Wersje pakietów pokazane powyżej są aktualne od ostatniej aktualizacji tej strony. Nowsze wersje mogą być dostępne. Sprawdź, czy wersje pakietów są zgodne z wersją platformy Spark.

Tworzenie tabel delty przy użyciu interfejsu API

Aby utworzyć zewnętrzną tabelę Delta przy użyciu interfejsu API REST Unity Catalog, wykonaj następujące kroki:

Krok 1. Wysyłanie żądania POST do interfejsu API tworzenia tabeli

Użyj następującego żądania API, aby zarejestrować metadane tabeli w 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
    }
  ]
}'

Zastąp następujące zmienne:

  • <workspace-url>: adres URL obszaru roboczego Azure Databricks
  • <token>: Token dla podmiotu wykonującego wywołanie interfejsu API
  • <uc-catalog-name>: nazwa katalogu w katalogu Unity Catalog, który będzie zawierać tabelę zewnętrzną
  • <schema-name>: nazwa schematu w katalogu, w którym zostanie utworzona tabela
  • <table-name>: Nazwa tabeli zewnętrznej
  • <path>: W pełni kwalifikowana ścieżka do danych tabeli

Krok 2. Inicjowanie lokalizacji tabeli delty

Wywołanie interfejsu API powyżej rejestruje tabelę w :[UC], ale nie tworzy plików Delta w lokalizacji przechowywania. Aby zainicjować lokalizację tabeli, napisz pustą tabelę delty przy użyciu platformy Spark:

Schemat używany w tym kroku musi dokładnie odpowiadać definicjom kolumn podanym w żądaniu interfejsu 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>")

Uwaga / Notatka

Interfejs API tworzenia tabel dla klientów zewnętrznych ma następujące ograniczenia:

  • Obsługiwane są tylko zewnętrzne tabele delty ("table_type": "EXTERNAL" i "data_source_format": "DELTA").
  • Dozwolone są tylko następujące pola:
    • name
    • catalog_name
    • schema_name
    • table_type
    • data_source_format
    • columns
    • storage_location
    • properties
  • Maski kolumn nie są obsługiwane.