Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Tato funkce je ve verzi Public Preview.
Tato stránka obsahuje informace o tom, jak vytvořit externí tabulky Katalogu Unity, které jsou podporovány službou Delta Lake z externích klientů a systémů.
Poznámka:
Databricks doporučuje používat Apache Spark k vytváření externích tabulek, aby se zajistilo, že definice sloupců jsou ve formátu kompatibilním s Apache Sparkem. Rozhraní API neověřuje správnost specifikace sloupce. Pokud specifikace není kompatibilní s Apache Sparkem, nemusí databricks Runtime číst tabulky.
Požadavky
Povolte pro metastor přístup k externím datům. Viz Povolení přístupu k externím datům na metastoru.
Udělte hlavní osobě konfigurující integraci následující oprávnění.
-
EXTERNAL USE SCHEMAoprávnění ke schématu obsahujícímu objekty. -
EXTERNAL USE LOCATIONoprávnění pro externí lokalitu obsahující cestu. Viz Udělení oprávnění hlavního katalogu Unity. -
CREATE TABLEoprávnění k tabulce,CREATE EXTERNAL TABLEk externímu umístění,USE CATALOGv nadřazeném katalogu aUSE SCHEMAv nadřazeném schématu.
-
Externí tabulky můžete vytvářet pomocí Apache Sparku, rozhraní API katalogu Unity nebo jiných externích klientů.
Vytváření tabulek Delta pomocí Apache Sparku
Následuje příklad nastavení pro konfiguraci Apache Sparku pro vytvoření externích tabulek Delta 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>",
Nahraďte následující proměnné:
-
<uc-catalog-name>: Název katalogu Unity, který obsahuje tabulky. -
<workspace-url>: Adresa URL pracovního prostoru Azure Databricks. -
<token>: Token OAuth pro instanční objekt, který konfiguruje integraci.
Aby Apache Spark a Delta Lake spolupracovaly s katalogem Unity, budete potřebovat alespoň Apache Spark 3.5.3 a Delta Lake 3.2.1.
Při spouštění Apache Sparku zahrňte následující závislosti:
--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"
Teď můžete vytvářet externí tabulky pomocí SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
Vytvoření tabulek Delta pomocí rozhraní API
Pokud chcete vytvořit externí tabulku Delta pomocí rozhraní REST API katalogu Unity, postupujte takto:
Krok 1: Vytvoření požadavku POST do rozhraní API pro vytvoření tabulky
Pomocí následujícího požadavku rozhraní API zaregistrujte metadata tabulky v katalogu Unity:
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
}
]
}'
Nahraďte následující proměnné:
-
<workspace-url>: Adresa URL pracovního prostoru Azure Databricks -
<token>: Token pro subjekt, který volá rozhraní API -
<uc-catalog-name>: Název katalogu v katalogu Unity, který bude obsahovat externí tabulku -
<schema-name>: Název schématu v katalogu, ve kterém se vytvoří tabulka -
<table-name>: Název externí tabulky -
<path>: Plně kvalifikovaná cesta k datům tabulky
Krok 2: Inicializace umístění tabulky Delta
Výše uvedená volání rozhraní API zaregistruje tabulku v :[UC], ale nevytvoří soubory Delta v umístění úložiště. Pokud chcete inicializovat umístění tabulky, napište prázdnou tabulku Delta pomocí Sparku:
Schéma použité v tomto kroku musí přesně odpovídat definicům sloupců zadaným v požadavku rozhraní 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>")
Poznámka:
Rozhraní API pro vytvoření tabulky pro externí klienty má následující omezení:
- Podporují se pouze externí tabulky Delta (
"table_type": "EXTERNAL"a"data_source_format": "DELTA"). - Jsou povolena pouze následující pole:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- Masky sloupců nejsou podporovány.