Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Esta característica está en versión preliminar pública.
En esta página se proporciona información sobre cómo crear tablas externas del catálogo de Unity respaldadas por Delta Lake desde clientes y sistemas externos.
Nota:
Databricks recomienda usar Apache Spark para crear tablas externas para asegurarse de que las definiciones de columna están en un formato compatible con Apache Spark. La API no valida la exactitud de la especificación de columna. Si la especificación no es compatible con Apache Spark, es posible que Databricks Runtime no pueda leer las tablas.
Requisitos
Habilite el acceso a datos externos para su metastore. Consulte Habilitar el acceso a datos externos en el metastore.
Conceder al principal que configura la integración los siguientes privilegios.
-
EXTERNAL USE SCHEMAprivilegio en el esquema que contiene los objetos. -
EXTERNAL USE LOCATIONprivilegio en la ubicación externa que contiene la ruta de acceso. Vea Otorgar a un principal privilegios del Catálogo de Unity. -
CREATE TABLEpermiso en la tabla,CREATE EXTERNAL TABLEen la localización externa,USE CATALOGen su catálogo principal yUSE SCHEMAen su esquema principal.
Vea Otorgar a un principal privilegios del Catálogo de Unity.
-
Puede crear tablas externas mediante Apache Spark, la API de catálogo de Unity u otros clientes externos.
Creación de tablas delta con Apache Spark
A continuación se muestra un ejemplo de la configuración para configurar Apache Spark para crear tablas delta externas del catálogo de 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>",
Sustituya las siguientes variables:
-
<uc-catalog-name>: El nombre del catálogo en Unity Catalog que contiene tus tablas. -
<workspace-url>: dirección URL del área de trabajo de Azure Databricks. -
<token>: token OAuth para el principal que configura la integración.
Para que Apache Spark y Delta Lake funcionen junto con el catálogo de Unity, necesitará al menos Apache Spark 3.5.3 y Delta Lake 3.2.1.
Incluya las siguientes dependencias al iniciar 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"
Ahora puede crear tablas externas mediante SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
Creación de tablas Delta mediante la API
Para crear una tabla delta externa mediante la API REST del catálogo de Unity, siga estos pasos:
Paso 1: Realizar una solicitud POST a Create Table API
Use la siguiente solicitud de API para registrar los metadatos de tabla en el catálogo de 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
}
]
}'
Sustituya las siguientes variables:
-
<workspace-url>: dirección URL del área de trabajo de Azure Databricks -
<token>: Token del principal que realiza la llamada a la API. -
<uc-catalog-name>: nombre del catálogo en el catálogo de Unity que contendrá la tabla externa. -
<schema-name>: nombre del esquema dentro del catálogo donde se creará la tabla. -
<table-name>: nombre de la tabla externa -
<path>: ruta de acceso completa a los datos de la tabla
Paso 2: Inicializar la ubicación de la tabla Delta
La llamada API anterior registra la tabla en :[UC], pero no crea los archivos Delta en la ubicación de almacenamiento. Para inicializar la ubicación de la tabla, escriba una tabla Delta vacía mediante Spark:
El esquema usado en este paso debe coincidir exactamente con las definiciones de columna proporcionadas en la solicitud de 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>")
Nota:
Create Table API para clientes externos tiene las siguientes limitaciones:
- Solo se admiten tablas delta externas (
"table_type": "EXTERNAL"y"data_source_format": "DELTA"). - Solo se permiten los siguientes campos:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- No se admiten máscaras de columna.