Dela via


Skapa externa Delta-tabeller från externa klienter

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Den här sidan innehåller information om hur du skapar externa Unity Catalog-tabeller som backas upp av Delta Lake från externa klienter och system.

Anmärkning

Databricks rekommenderar att du använder Apache Spark för att skapa externa tabeller för att säkerställa att kolumndefinitionerna är i ett format som är kompatibelt med Apache Spark. API:et verifierar inte att kolumnspecifikationen är korrekt. Om specifikationen inte är kompatibel med Apache Spark kanske Databricks Runtime inte kan läsa tabellerna.

Kravspecifikation

Du kan skapa externa tabeller med Apache Spark, Unity Catalog-API:et eller andra externa klienter.

Skapa Delta-tabeller med Apache Spark

Följande är ett exempel på inställningarna för att konfigurera Apache Spark för att skapa externa Delta-tabeller i Unity Catalog:

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

Ersätt följande variabler:

  • <uc-catalog-name>: Namnet på katalogen i Unity Catalog som innehåller dina tabeller.
  • <workspace-url>: URL för Azure Databricks-arbetsytan.
  • <token>: OAuth-token för det huvudnamn som konfigurerar integreringen.

För att Apache Spark och Delta Lake ska fungera tillsammans med Unity Catalog behöver du minst Apache Spark 3.5.3 och Delta Lake 3.2.1.

Inkludera följande beroenden när du startar 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"

Nu kan du skapa externa tabeller med HJÄLP av SQL:

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

Skapa Delta-tabeller med hjälp av API:et

Följ dessa steg för att skapa en extern Delta-tabell med rest-API:et för Unity Catalog:

Steg 1: Skicka en POST-begäran till API:et Skapa tabell

Använd följande API-begäran för att registrera tabellmetadata i 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
    }
  ]
}'

Ersätt följande variabler:

  • <workspace-url>: URL för Azure Databricks-arbetsytan
  • <token>: Token för huvudkontot som gör API-anropet
  • <uc-catalog-name>: Namnet på katalogen i Unity Catalog som ska innehålla den externa tabellen
  • <schema-name>: Namnet på schemat i katalogen där tabellen ska skapas
  • <table-name>: Namnet på den externa tabellen
  • <path>: Fullständigt kvalificerad sökväg till tabelldata

Steg 2: Initiera deltatabellens plats

API-anropet ovan registrerar tabellen i :[UC], men den skapar inte Delta-filerna på lagringsplatsen. Om du vill initiera tabellplatsen skriver du en tom Delta-tabell med Spark:

Schemat som används i det här steget måste exakt matcha kolumndefinitionerna som anges i API-begäran.


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

Anmärkning

Skapa tabell-API för externa klienter har följande begränsningar:

  • Endast externa Delta-tabeller stöds ("table_type": "EXTERNAL" och "data_source_format": "DELTA").
  • Endast följande fält tillåts:
    • name
    • catalog_name
    • schema_name
    • table_type
    • data_source_format
    • columns
    • storage_location
    • properties
  • Kolumnmasker stöds inte.