Udostępnij przez


Utwórz zewnętrzne tabele Delta z zewnętrznych klientów

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

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:
    • name
    • catalog_name
    • schema_name
    • table_type
    • data_source_format
    • columns
    • storage_location
    • properties
  • Maski kolumn nie są obsługiwane.