Use o site Unity Catalog com seu pipeline DLT
Visualização
O suporte a DLT para o Unity Catalog está em visualização pública.
Databricks recomenda configurar o pipeline DLT com Unity Catalog.
O pipeline configurado com Unity Catalog publica todas as visualizações materializadas e tabelas de transmissão definidas no catálogo e no esquema especificados. Unity Catalog O pipeline pode ler de outras tabelas e volumes do site Unity Catalog.
Para gerenciar as permissões nas tabelas criadas por um pipeline do Unity Catalog, use GRANT e REVOKE.
Este artigo discute a funcionalidade do modo de publicação atual do default para pipeline. O pipeline criado antes de 5 de fevereiro de 2025 pode usar o modo de publicação herdado e o esquema virtual LIVE
. Consulte esquema LIVE (legado).
Requisitos
Para criar tabelas de transmissão e visualizações materializadas em um esquema de destino em Unity Catalog, o senhor deve ter as seguintes permissões no esquema e no catálogo pai:
USE CATALOG
privilégios no catálogo de destino.CREATE MATERIALIZED VIEW
eUSE SCHEMA
privilégios no esquema de destino se o site pipeline criar uma visualização materializada.CREATE TABLE
eUSE SCHEMA
privilégios no esquema de destino se o site pipeline criar tabelas de transmissão.
Se o pipeline criar novos esquemas, o senhor deverá ter privilégios USE CATALOG
e CREATE SCHEMA
no catálogo de destino.
computação necessária para executar um Unity Catalog-enabled pipeline:
- Modo de acesso padrão (antigo modo de acesso compartilhado). Um pipeline habilitado para o Unity Catalog não pode ser executado em um compute dedicado (anteriormente, compute de usuário único). Consulte Limitações do modo de acesso padrão no Unity Catalog.
A computação necessária para consultar tabelas criadas por um DLT pipeline usando Unity Catalog (incluindo tabelas de transmissão e visualização materializada) inclui qualquer um dos seguintes itens:
- SQL warehouses
- Modo de acesso padrão compute em Databricks Runtime 13.3 LTS ou acima.
- Modo de acesso dedicado compute, se o controle de acesso refinado estiver ativado no compute dedicado (ou seja, ele está em execução no Databricks Runtime 15.4 ou acima e serverless compute está ativado para o workspace). Para obter mais informações, consulte Controle de acesso refinado em compute dedicado (anteriormente, usuário único compute).
- Modo de acesso dedicado compute em 13.3 LTS até 15.3, somente se o proprietário da tabela executar a consulta.
Aplicam-se limitações adicionais ao site compute. Consulte a seção a seguir.
Limitações
A seguir estão as limitações ao usar o Unity Catalog com a DLT:
-
Por default, somente o proprietário do pipeline e os administradores do workspace podem view o driver logs do compute que executa um Unity Catalog habilitado pipeline. Para permitir que outros usuários acessem o driver,logs consulte Permitir que usuários não administradores view acessem o driver logs de um Unity Catalog pipeline habilitado.
-
Os pipelines existentes que usam o Hive metastore não podem ser atualizados para usar o Unity Catalog. Para migrar um pipeline existente que grava em Hive metastore, o senhor deve criar um novo pipeline e reingressar os dados da(s) fonte(s) de dados. Consulte Criar um Unity Catalog pipeline clonando um Hive metastore pipeline .
-
Os JARs não são suportados. Somente a Python biblioteca de terceiros é compatível. Consulte gerenciar Python dependências para o pipeline DLT.
-
Não há suporte para consultas de linguagem de manipulação de dados (DML) que modifiquem o esquema de uma tabela de transmissão.
-
Um view materializado criado em um DLT pipeline não pode ser usado como uma fonte de transmissão fora desse pipeline, por exemplo, em outro pipeline ou em um Notebook downstream.
-
Os dados da visualização materializada e das tabelas de transmissão são armazenados no local de armazenamento do esquema que os contém. Se um local de armazenamento do esquema não for especificado, as tabelas serão armazenadas no local de armazenamento do catálogo. Se os locais de armazenamento do esquema e do catálogo não forem especificados, as tabelas serão armazenadas no local de armazenamento raiz do metastore.
-
A história do Catalog Explorer tab não mostra a história da visualização materializada.
-
A propriedade
LOCATION
não é suportada ao definir uma tabela. -
Os pipelines habilitados para Unity Catalog não podem publicar no Hive metastore.
-
Não há suporte para UDFs Python.
-
O senhor não pode usar Delta Sharing com um DLT materializado view ou uma tabela de transmissão publicada em Unity Catalog.
Os arquivos subjacentes que dão suporte à visualização materializada podem incluir dados de tabelas upstream (incluindo possíveis informações de identificação pessoal) que não aparecem na definição da view materializada. Esses dados são adicionados automaticamente ao armazenamento subjacente para dar suporte à atualização incremental da visualização materializada.
Como os arquivos subjacentes de um view materializado podem expor dados de tabelas upstream que não fazem parte do esquema view materializado, o site Databricks recomenda não compartilhar o armazenamento subjacente com consumidores downstream não confiáveis.
Por exemplo, suponha que uma definição materializada do site view inclua uma cláusula COUNT(DISTINCT field_a)
. Embora a definição do view materializado inclua apenas a cláusula aggregate COUNT DISTINCT
, os arquivos subjacentes conterão uma lista dos valores reais de field_a
.
Posso usar o pipeline Hive metastore e Unity Catalog juntos?
Seu workspace pode conter um pipeline que usa Unity Catalog e o legado Hive metastore. No entanto, um único pipeline não pode gravar nos sites Hive metastore e Unity Catalog. O pipeline existente que grava no site Hive metastore não pode ser atualizado para usar o site Unity Catalog. Para migrar um pipeline existente que grava em Hive metastore, o senhor deve criar um novo pipeline e reingressar os dados da(s) fonte(s) de dados. Consulte Criar um Unity Catalog pipeline clonando um Hive metastore pipeline .
Os pipelines existentes que não usam Unity Catalog não são afetados pela criação de um novo pipeline configurado com Unity Catalog. Esses pipelines continuam a manter os dados no site Hive metastore usando o local de armazenamento configurado.
Salvo especificação em contrário neste documento, todas as fontes de dados existentes e a funcionalidade DLT são compatíveis com o pipeline que usa Unity Catalog. Tanto o Python e SQL são compatíveis com o pipeline que usa Unity Catalog.
Alterações na funcionalidade existente
Quando a DLT é configurada para persistir os dados em Unity Catalog, a DLT pipeline gerencia o ciclo de vida e as permissões da tabela. Como resultado:
-
Quando uma tabela é removida da definição pipeline, a próxima atualização pipeline marcará a entrada correspondente da tabela materializada view ou de transmissão como inativa. As tabelas inativas ainda podem ser consultadas, mas não serão atualizadas. Para limpar a visualização materializada ou as tabelas de transmissão, o senhor pode explicitamente
DROP
a tabela.- O senhor pode recuperar qualquer tabela descartada dentro de 7 dias usando o comando
UNDROP
. - Para manter o comportamento herdado em que a entrada da tabela materializada view ou transmissão é removida de Unity Catalog na próxima atualização de pipeline, defina a configuração pipeline
"pipelines.dropInactiveTables": "true"
. Os dados reais são retidos por um período para que possam ser recuperados se excluídos por engano. Os dados podem ser recuperados em até 7 dias adicionando a tabela materializada view ou de transmissão novamente à definição pipeline.
- O senhor pode recuperar qualquer tabela descartada dentro de 7 dias usando o comando
-
A exclusão do pipeline DLT resulta na exclusão de todas as tabelas definidas nesse pipeline. Devido a essa alteração, a interface do usuário da DLT foi atualizada para solicitar que o senhor confirme a exclusão de um pipeline.
-
As tabelas de apoio internas, incluindo aquelas usadas para suportar
APPLY CHANGES INTO
, não são diretamente acessíveis pelos usuários.
Gravar tabelas no Unity Catalog a partir de um pipeline DLT
Para gravar suas tabelas em Unity Catalog, o senhor deve configurar seu pipeline para trabalhar com ele por meio de seu workspace. Quando o senhor criar um pipeline, selecione Unity Catalog em Storage options (Opções de armazenamento) , selecione um catálogo no menu suspenso Catalog (Catálogo ) e selecione um esquema existente ou digite o nome de um novo esquema no menu suspenso Target schema (Esquema de destino ). Para saber mais sobre os catálogos do Unity Catalog, consulte O que são catálogos no Databricks? Para saber mais sobre esquemas no Unity Catalog, consulte O que são esquemas no Databricks?
Ingerir dados em um pipeline do Unity Catalog
Seu pipeline configurado para usar o Unity Catalog pode ler dados:
- Unity Catalog gerenciar e tabelas externas, visualização, visualização materializada e tabelas de transmissão.
- Hive metastore tabelas e visualização.
- O Auto Loader usa a função
read_files()
para ler os locais externos do Unity Catalog. - Apache Kafka e Amazon Kinesis.
A seguir, exemplos de leitura das tabelas Unity Catalog e Hive metastore.
Ingestão de lotes de uma mesa Unity Catalog
- SQL
- Python
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
@dlt.table
def table_name():
return spark.read.table("my_catalog.my_schema.table")
transmissão muda de uma tabela Unity Catalog
- SQL
- Python
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
@dlt.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Ingerir dados de Hive metastore
Um pipeline que usa Unity Catalog pode ler dados de tabelas Hive metastore usando o catálogo hive_metastore
:
- SQL
- Python
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
@dlt.table
def table3():
return spark.read.table("hive_metastore.some_schema.table")
Ingerir dados do Auto Loader
- SQL
- Python
CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
"/path/to/uc/external/location",
format => "json"
)
@dlt.table(table_properties={"quality": "bronze"})
def table_name():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "json")
.load(f"{path_to_uc_external_location}")
)
Compartilhar visão materializada
Por default, somente o proprietário de pipeline tem permissão para consultar o conjunto de dados criado por pipeline. O senhor pode conceder a outros usuários a capacidade de consultar uma tabela usando instruções GRANT e pode revogar o acesso à consulta usando instruções REVOKE. Para obter mais informações sobre privilégios em Unity Catalog, consulte gerenciar privilégios em Unity Catalog.
Conceder seleção em uma tabela
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Revogar a seleção em uma tabela
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Conceder privilégios para criar tabela ou criar view materializado
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
visualizar a linhagem de um pipeline
A linhagem das tabelas em um pipeline DLT é visível no Catalog Explorer. A interface de usuário de linhagem do Catalog Explorer mostra as tabelas upstream e downstream da exibição materializada ou das tabelas de transmissão em um Unity Catalog habilitado pipeline. Para saber mais sobre Unity Catalog a linhagem, consulte Captura e view linhagem de dados Unity Catalog usando.
Para uma tabela materializada view ou de transmissão em um DLT habilitado para o Unity Catalog pipeline, a UI de linhagem do Catalog Explorer também será vinculada ao pipeline que produziu a tabela materializada view ou de transmissão se o pipeline for acessível a partir do workspace atual.
Adicionar, alterar ou excluir dados em uma tabela de transmissão
O senhor pode usar instruções de linguagem de manipulação de dados (DML), incluindo instruções de inserção, atualização, exclusão e merge, para modificar as tabelas de transmissão publicadas em Unity Catalog. O suporte a consultas DML em tabelas de transmissão permite casos de uso como a atualização de tabelas para compliance com o Regulamento Geral de Proteção de Dados (GDPR) (GDPR).
- As declarações DML que modificam o esquema de tabela de uma tabela de streaming não são suportadas. Certifique-se de que suas instruções DML não tentem evoluir o esquema da tabela.
- As instruções DML que atualizam uma tabela de transmissão só podem ser executadas em um clustering Unity Catalog compartilhado ou em um SQL warehouse usando Databricks Runtime 13.3 LTS e acima.
- Como a transmissão exige fontes de dados somente anexadas, se o seu processamento exigir a transmissão de uma tabela de transmissão de origem com alterações (por exemplo, por instruções DML), defina o sinalizador skipChangeCommits ao ler a tabela de transmissão de origem. Quando
skipChangeCommits
é definido, as transações que excluem ou modificam registros na tabela de origem são ignoradas. Se o processamento não exigir uma tabela de transmissão, o senhor poderá usar uma tabela materializada view (que não tem a restrição de append-only) como tabela de destino.
A seguir, exemplos de instruções DML para modificar registros em uma tabela de transmissão.
Exclua registros com um ID específico:
DELETE FROM my_streaming_table WHERE id = 123;
Atualize os registros com uma ID específica:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Publique tabelas com filtros de linha e máscaras de coluna
Visualização
Esse recurso está em Public Preview.
Os filtros de linha permitem especificar uma função que se aplica como filtro sempre que uma varredura de tabela busca linhas. Esses filtros garantem que as consultas subsequentes retornem somente linhas para as quais o predicado do filtro seja avaliado como verdadeiro.
As máscaras de coluna permitem mascarar os valores de uma coluna sempre que uma varredura de tabela busca linhas. Consultas futuras para essa coluna retornam o resultado da função avaliada em vez do valor original da coluna. Para obter mais informações sobre o uso de filtros de linha e máscaras de coluna, consulte Filtro sensível à tabela uso de dados filtros de linha e máscaras de coluna.
Gerenciando filtros de linha e máscaras de coluna
Os filtros de linha e as máscaras de coluna na visualização materializada e nas tabelas de transmissão devem ser adicionados, atualizados ou eliminados por meio do comando CREATE OR REFRESH
.
Para obter uma sintaxe detalhada sobre a definição de tabelas com filtros de linha e máscaras de coluna, consulte a referência de linguagem DLT SQL e a referência de linguagem DLT Python.
Comportamento
A seguir, detalhes importantes ao usar filtros de linha ou máscaras de coluna no pipeline DLT:
- Atualizar como proprietário : quando uma atualização pipeline atualiza uma tabela materializada view ou de transmissão, as funções de filtro de linha e máscara de coluna são executadas com os direitos do proprietário pipeline. Isso significa que a tabela refresh usa o contexto de segurança do usuário que criou o pipeline. As funções que verificam o contexto do usuário (como
CURRENT_USER
eIS_MEMBER
) são avaliadas usando o contexto do usuário do proprietário do pipeline. - Consulta : Ao consultar uma tabela materializada view ou de transmissão, as funções que verificam o contexto do usuário (como
CURRENT_USER
eIS_MEMBER
) são avaliadas usando o contexto do usuário do invocador. Essa abordagem impõe controles de acesso e segurança de dados específicos do usuário com base no contexto atual do usuário. - Ao criar uma visualização materializada sobre tabelas de origem que contêm filtros de linha e máscaras de coluna, o site refresh da visualização materializada view é sempre um site completo refresh. Um refresh completo reprocessa todos os dados disponíveis na fonte com as definições mais recentes. Esse processo verifica se as políticas de segurança nas tabelas de origem são avaliadas e aplicadas com os dados e definições mais atualizados.
Observabilidade
Use DESCRIBE EXTENDED
, INFORMATION_SCHEMA
ou o Catalog Explorer para examinar os filtros de linha e as máscaras de coluna existentes que se aplicam a uma determinada tabela materializada view ou de transmissão. Essa funcionalidade permite que os usuários auditem e revisem o acesso aos dados e as medidas de proteção na visualização materializada e nas tabelas de transmissão.