Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Ta funkcja jest dostępna w publicznej wersji testowej.
Ta strona przedstawia informacje o tym, jak tworzyć tabele zewnętrzne w katalogu Unity wspierane przez Delta Lake z wykorzystaniem zewnętrznych klientów i systemów.
Uwaga / Notatka
Usługa Databricks zaleca używanie platformy Apache Spark do tworzenia tabel zewnętrznych w celu zapewnienia, ż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.
Wymagania
Włącz dostęp do danych zewnętrznych dla magazynu metadanych. Zobacz Włączanie dostępu do danych zewnętrznych w magazynie metadanych.
Nadać podstawowemu użytkownikowi konfigurowania integracji następujące uprawnienia
-
EXTERNAL USE SCHEMAuprawnienia do schematu zawierającego obiekty. -
EXTERNAL USE LOCATIONuprawnienie do zewnętrznej lokalizacji zawierającej ścieżkę. Zobacz Jak nadawać uprawnienia w Unity Catalog dla głównych podmiotów. -
CREATE TABLEuprawnienie do tabeli,CREATE EXTERNAL TABLEw lokalizacji zewnętrznej,USE CATALOGw katalogu nadrzędnym iUSE SCHEMAw schemacie nadrzędnym.
Zobacz Jak nadawać uprawnienia w Unity Catalog dla głównych podmiotów.
-
Tabele zewnętrzne można tworzyć przy użyciu Apache Spark, interfejsu API Unity Catalog lub innych klientów zewnętrznych.
Tworzenie tabel delty przy użyciu platformy Apache Spark
Poniżej przedstawiono przykład ustawień konfigurowania Apache Spark w celu utworzenia zewnętrznych tabel Delta w katalogu Unity.
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.hadoop.fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog",
"spark.sql.catalog.<uc-catalog-name>.token": "<token>",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
Zastąp następujące zmienne:
-
<uc-catalog-name>: nazwa katalogu w Unity Catalog, który zawiera twoje tabele. -
<workspace-url>: adres URL obszaru roboczego usługi Azure Databricks. -
<token>: token OAuth dla podmiotu zabezpieczeń konfigurującego integrację.
Aby Apache Spark i Delta Lake współpracowały z Unity Catalog, potrzebne będą co najmniej Apache Spark 3.5.3 i Delta Lake 3.2.1.
Uwzględnij następujące zależności podczas uruchamiania platformy Apache Spark:
--packages "org.apache.hadoop:hadoop-aws:3.3.4,\
io.delta:delta-spark_2.12:3.2.1,\
io.unitycatalog:unitycatalog-spark_2.12:0.2.0"
Teraz możesz tworzyć tabele zewnętrzne przy użyciu języka SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
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 usługi 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.