Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Visualização Pública.
Esta página fornece informações sobre como criar tabelas externas do Unity Catalog suportadas pelo Delta Lake a partir de clientes e sistemas externos.
Observação
O Databricks recomenda usar o Apache Spark para criar tabelas externas para garantir que as definições de coluna estejam em um formato compatível com o Apache Spark. A API não valida a correção da especificação da coluna. Se a especificação não for compatível com o Apache Spark, o Databricks Runtime poderá não conseguir ler as tabelas.
Requisitos
Habilite o Acesso a dados externos no seu metastore. Confira Habilitar o acesso a dados externos no metastore.
Conceda ao principal que configure a integração os privilégios a seguir.
-
EXTERNAL USE SCHEMAprivilégio sobre o esquema que contém os objetos. -
EXTERNAL USE LOCATIONprivilégio no local externo que contém o caminho. Consulte Conceder privilégios no Unity Catalog a um principal. -
CREATE TABLEpermissão sobre a tabela,CREATE EXTERNAL TABLEsobre o local externo,USE CATALOGsobre seu catálogo principal eUSE SCHEMAsobre seu esquema principal.
Consulte Conceder privilégios no Unity Catalog a um principal.
-
Você pode criar tabelas externas usando o Apache Spark, a API do Catálogo do Unity ou outros clientes externos.
Criar tabelas Delta usando o Apache Spark
Veja a seguir um exemplo das configurações para configurar o Apache Spark para criar tabelas Delta externas do Catálogo do 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>",
Substitua as seguintes variáveis:
-
<uc-catalog-name>: o nome do catálogo no Unity Catalog que contém suas tabelas. -
<workspace-url>: URL do workspace do Azure Databricks. -
<token>: token OAuth para o principal que configura a integração.
Para que o Apache Spark e o Delta Lake trabalhem em conjunto com o Catálogo do Unity, você precisará de pelo menos Apache Spark 3.5.3 e Delta Lake 3.2.1.
Inclua as seguintes dependências ao iniciar o 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"
Agora você pode criar tabelas externas usando o SQL:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
Criar tabelas Delta usando a API
Para criar uma tabela Delta externa usando a API REST do Catálogo do Unity, siga estas etapas:
Etapa 1: fazer uma solicitação POST para a API Criar Tabela
Use a seguinte solicitação de API para registrar os metadados da tabela no Catálogo do 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
}
]
}'
Substitua as seguintes variáveis:
-
<workspace-url>: URL do workspace do Azure Databricks -
<token>: token para o principal que está fazendo a chamada à API -
<uc-catalog-name>: nome do catálogo no Catálogo do Unity que conterá a tabela externa -
<schema-name>: nome do esquema dentro do catálogo em que a tabela será criada -
<table-name>: nome da tabela externa -
<path>: caminho totalmente qualificado para os dados da tabela
Etapa 2: Configurar a localização da tabela Delta
A chamada à API acima registra a tabela em :[UC], mas não cria os arquivos Delta no local de armazenamento. Para inicializar o local da tabela, escreva uma tabela Delta vazia usando o Spark:
O esquema usado nesta etapa deve corresponder exatamente às definições de coluna fornecidas na solicitação 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>")
Observação
A API Criar Tabela para clientes externos tem as seguintes limitações:
- Há suporte apenas para tabelas Delta externas (
"table_type": "EXTERNAL"e"data_source_format": "DELTA"). - Somente os seguintes campos são permitidos:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- Não há suporte para máscaras de coluna.