Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questa funzionalità è in Anteprima Pubblica.
Questa pagina fornisce informazioni su come creare tabelle esterne del catalogo Unity supportate da Delta Lake da client e sistemi esterni.
Annotazioni
Databricks consiglia di usare Apache Spark per creare tabelle esterne per garantire che le definizioni di colonna siano in un formato compatibile con Apache Spark. L'API non convalida la correttezza della specifica della colonna. Se la specifica non è compatibile con Apache Spark, Databricks Runtime potrebbe non essere in grado di leggere le tabelle.
Requisiti
Abilitare l'accesso ai dati esterni per il metastore. Vedere Abilitare l'accesso ai dati esterni nel metastore.
Concedere all'entità di sicurezza la configurazione dell'integrazione dei privilegi seguenti
-
EXTERNAL USE SCHEMAprivilegio sullo schema contenente gli oggetti . -
EXTERNAL USE LOCATIONprivilegio nella posizione esterna contenente il percorso. Vedere Concedere un'entità di sicurezza ai privilegi del catalogo Unity. -
CREATE TABLEautorizzazione per la tabella,CREATE EXTERNAL TABLEnella posizione esterna,USE CATALOGnel catalogo padre eUSE SCHEMAnello schema padre.
Vedere Concedere un'entità di sicurezza ai privilegi del catalogo Unity.
-
È possibile creare tabelle esterne usando Apache Spark, l'API del catalogo Unity o altri client esterni.
Creare tabelle Delta con Apache Spark
Di seguito è riportato un esempio delle impostazioni per configurare Apache Spark per creare tabelle Delta esterne del catalogo 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>",
Sostituire le variabili seguenti:
-
<uc-catalog-name>: nome del catalogo in Unity Catalog che contiene le tabelle. -
<workspace-url>: URL dell'area di lavoro di Azure Databricks. -
<token>: token OAuth dell'entità principale che configura l'integrazione.
Affinché Apache Spark e Delta Lake funzionino insieme al catalogo unity, è necessario almeno Apache Spark 3.5.3 e Delta Lake 3.2.1.
Includere le dipendenze seguenti all'avvio di 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"
È ora possibile creare tabelle esterne usando SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
Creare tabelle Delta usando l'API
Per creare una tabella Delta esterna usando l'API REST del catalogo Unity, seguire questa procedura:
Passaggio 1: Effettuare una richiesta POST all'API Crea tabella
Usare la richiesta API seguente per registrare i metadati della tabella nel catalogo 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
}
]
}'
Sostituire le variabili seguenti:
-
<workspace-url>: URL dell'area di lavoro di Azure Databricks -
<token>: token per l'entità che effettua la chiamata API -
<uc-catalog-name>: nome del catalogo in Unity Catalog che conterrà la tabella esterna -
<schema-name>: nome dello schema all'interno del catalogo in cui verrà creata la tabella -
<table-name>: nome della tabella esterna -
<path>: percorso completo dei dati della tabella
Passaggio 2: Inizializzare la posizione della tabella Delta
La chiamata API precedente registra la tabella in :[UC], ma non crea i file Delta nel percorso di archiviazione. Per inizializzare il percorso della tabella, scrivere una tabella Delta vuota usando Spark:
Lo schema usato in questo passaggio deve corrispondere esattamente alle definizioni di colonna fornite nella richiesta 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>")
Annotazioni
L'API Crea tabella per i client esterni presenta le limitazioni seguenti:
- Sono supportate solo le tabelle Delta esterne (
"table_type": "EXTERNAL"e"data_source_format": "DELTA"). - Sono consentiti solo i campi seguenti:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- Le maschere di colonna non sono supportate.