Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Włącz dostęp do danych zewnętrznych dla magazynu metadanych. Zobacz Włączanie dostępu do danych zewnętrznych w magazynie metadanych.
- Nadaj jednostce uzyskującej zewnętrzny dostęp do danych uprawnienie
EXTERNAL USE SCHEMAdo schematu zawierającego obiekty. Zobacz Jak nadawać uprawnienia w Unity Catalog dla głównych podmiotów. - W przypadku tabel zewnętrznych, do których uzyskuje się dostęp za pomocą ścieżki: przyznaj podmiotowi uprawnienie
EXTERNAL USE LOCATIONdo lokalizacji zewnętrznej zawierającej ścieżkę tabeli. Zobacz Jak nadawać uprawnienia w Unity Catalog dla głównych podmiotów. - Upewnij się, że podmiot ma odpowiednie uprawnienia:
-
SELECTw tabeli dla odczytów -
MODIFYw tabeli dla operacji zapisu -
CREATEw schemacie tworzenia tabeli - W przypadku zapisów zewnętrznych w zarządzanych tabelach Delta upewnij się, że tabela, do której zapisujesz, ma włączoną funkcję zatwierdzeń katalogu.
-
- Uwierzytelnianie przy użyciu jednej z następujących metod:
- Osobisty token dostępu (PAT): Zobacz Autoryzuj dostęp do zasobów Azure Databricks.
- Uwierzytelnianie maszyny do maszyny OAuth (M2M): obsługuje automatyczne odświeżanie poświadczeń i tokenów dla długotrwałych zadań platformy Spark (>1 godzina). Zobacz Autoryzuj dostęp jednostki usługi do Azure Databricks za pomocą protokołu OAuth.
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 TABLEw 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,VACUUMiANALYZE, 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ładadb-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:
- Klient Spark Unity Catalog w wersji 0.4.1 lub nowszej (
io.unitycatalog:unitycatalog-spark) - Apache Spark 4.0 lub nowszy
- Delta Spark 4.2.0 lub nowsza
- Podmiot usługowy OAuth M2M z odpowiednimi uprawnieniami. Zobacz Autoryzuj dostęp jednostki usługi do Azure Databricks za pomocą protokołu OAuth.
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:
-
<uc-catalog-name>: nazwa katalogu w Unity Catalog, który zawiera twoje tabele. -
<oauth-token-endpoint>: adres URL punktu końcowego tokenu OAuth. Aby skonstruować ten adres URL:- Znajdź identyfikator konta Azure Databricks. Zobacz Znajdź swój identyfikator konta.
- Użyj formatu:
https://accounts.cloud.databricks.com/oidc/accounts/<account-id>/v1/token
-
<oauth-client-id>: identyfikator klienta OAuth dla podmiotu usługowego. Zobacz Autoryzuj dostęp jednostki usługi do Azure Databricks za pomocą protokołu OAuth. -
<oauth-client-secret>: Tajemnica klienta OAuth dla głównego użytkownika usługi. Zobacz Autoryzuj dostęp jednostki usługi do Azure Databricks za pomocą protokołu OAuth.
-
<workspace-url>: URL obszaru roboczego Azure Databricks, w tym identyfikator obszaru roboczego. Na przykładadb-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:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- Maski kolumn nie są obsługiwane.