Utilize o Unity Catalog com os pipelines Delta Live Tables
O Databricks recomenda a configuração de pipelines Delta Live Tables com o Unity Catalog.
Os pipelines configurados com o Unity Catalog publicam todas as visualizações materializadas definidas e tabelas de streaming no catálogo e esquema especificados. Os pipelines do Catálogo Unity podem ser lidos de outras tabelas e volumes do Catálogo Unity.
Para gerir permissões nas tabelas criadas por um pipeline do Catálogo Unity, use GRANT e REVOKE.
Nota
Este artigo discute a funcionalidade para o atual modo padrão de publicação para pipelines. Os pipelines criados antes de 5 de fevereiro de 2025 podem usar o modo de publicação herdado e o esquema virtual LIVE
. Consulte esquema LIVE (legado).
Requisitos
Para criar tabelas de streaming e exibições materializadas em um esquema de destino no Unity Catalog, você 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 caso o pipeline venha a criar visões materializadas. -
CREATE TABLE
eUSE SCHEMA
privilégios no esquema de destino, caso o pipeline crie tabelas de streaming .
Se o pipeline criar novos esquemas, você deverá ter privilégios de USE CATALOG
e CREATE SCHEMA
no catálogo de destino.
Computação necessária para executar um pipeline habilitado para Unity Catalog:
- Clusters de modo de acesso compartilhado. Um pipeline habilitado para Unity Catalog não pode ser executado em um único cluster de usuário ("atribuído"). Consulte Limitações do modo de acesso compartilhado no Unity Catalog.
A computação necessária para consultar tabelas criadas por um pipeline Delta Live Tables usando o Unity Catalog (incluindo tabelas de streaming e vistas materializadas) inclui qualquer um dos seguintes elementos:
- Armazéns SQL
- Clusters de modo de acesso compartilhado no Databricks Runtime 13.3 LTS ou superior.
- Clusters de modo de acesso de usuário único (ou "atribuído"), se o controle de acesso refinado estiver habilitado no cluster de usuário único (ou seja, o cluster estiver sendo executado no Databricks Runtime 15.4 ou superior e a computação sem servidor estiver habilitada para o espaço de trabalho). Para obter mais informações, consulte Controle de acesso refinado na computação de usuário único.
- Clusters de modo de acesso de usuário único (ou "atribuído") em 13.3 LTS a 15.3, somente se o proprietário da tabela executar a consulta.
Aplicam-se limitações de computação adicionais. Consulte a secção que se segue.
Limitações
A seguir estão as limitações ao usar o Unity Catalog com Delta Live Tables:
Por padrão, somente o proprietário da pipeline e os administradores do espaço de trabalho podem ver os logs do driver do cluster que executa um pipeline com Catálogo Unity ativado. Para permitir que outros utilizadores acedam aos logs do driver, consulte Permitir que utilizadores não administradores visualizem os logs do driver de um pipeline habilitado para o Unity Catalog.
Os pipelines existentes que usam o metastore do Hive não podem ser atualizados para usar o Unity Catalog. Para migrar um pipeline existente que grava no metastore do Hive, você deve criar um novo pipeline e re-ingerir dados da(s) fonte(s) de dados. Consulte para criar um pipeline do Unity Catalog clonando um pipeline do metastore do Hive.
Não é possível criar um pipeline habilitado pelo Unity Catalog num espaço de trabalho ligado a um metastore que foi criado durante a pré-visualização pública do Unity Catalog. Consulte Atualizar para herança de privilégios.
JARs não são suportados. Apenas bibliotecas Python de terceiros são suportadas. Consulte Gerenciar dependências Python para pipelines Delta Live Tables.
Não há suporte para consultas DML (linguagem de manipulação de dados) que modificam o esquema de uma tabela de streaming.
Uma exibição materializada criada em um pipeline Delta Live Tables não pode ser usada como uma fonte de streaming fora desse pipeline, por exemplo, em outro pipeline ou em um notebook downstream.
Os dados das visualizações materializadas e das tabelas de streaming são armazenados no local de armazenamento do esquema que os contém. Se um local de armazenamento de 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.
O separador Catalog Explorer History não mostra o histórico de visualizações materializadas.
A propriedade
LOCATION
não é suportada ao definir uma tabela.Os pipelines habilitados para Unity Catalog não podem publicar no metastore do Hive.
O suporte a Python UDF está em Visualização Pública.
Não pode usar Delta Sharing com uma exibição materializada do Delta Live Tables ou uma tabela de transmissão publicada no Unity Catalog.
Não é possível usar a função com valor de tabela
event_log
em um pipeline ou consulta para acessar os logs de eventos de vários pipelines.Não é possível compartilhar uma vista criada sobre a função de valor de tabela
event_log
com outros utilizadores.
Nota
Os arquivos subjacentes que suportam visualizações materializadas podem incluir dados de tabelas upstream (incluindo possíveis informações pessoalmente identificáveis) que não aparecem na definição de exibição materializada. Esses dados são adicionados automaticamente ao armazenamento subjacente para oferecer suporte à atualização incremental de exibições materializadas.
Como os arquivos subjacentes de uma exibição materializada podem correr o risco de expor dados de tabelas upstream que não fazem parte do esquema de exibição materializado, o Databricks recomenda não compartilhar o armazenamento subjacente com consumidores downstream não confiáveis.
Por exemplo, suponha que uma definição de exibição materializada inclua uma COUNT(DISTINCT field_a)
cláusula. Embora a definição de exibição materializada inclua apenas a cláusula COUNT DISTINCT
agregada, os arquivos subjacentes conterão uma lista dos valores reais de field_a
.
Posso usar o metastore do Hive e os pipelines do Unity Catalog juntos?
O seu espaço de trabalho pode conter pipelines que usam o Unity Catalog e o metastore herdado do Hive. No entanto, um único pipeline não pode gravar no metastore do Hive e no Unity Catalog. Os pipelines existentes que gravam no Hive Metastore não podem ser atualizados para usar o Unity Catalog. Para migrar um pipeline existente que grava no metastore do Hive, você deve criar um novo pipeline e re-ingerir dados da(s) fonte(s) de dados. Consulte para criar um pipeline do Unity Catalog clonando um pipeline do metastore do Hive.
Os pipelines existentes que não usam o Unity Catalog não são afetados pela criação de novos pipelines configurados com o Unity Catalog. Esses pipelines continuam a manter os dados no metastore do Hive usando o local de armazenamento configurado.
A menos que especificado de outra forma neste documento, todas as fontes de dados existentes e a funcionalidade Delta Live Tables são suportadas com pipelines que usam o Unity Catalog. As interfaces de programação Python e SQL são compatíveis com pipelines que usam o Unity Catalog.
Alterações à funcionalidade existente
Quando o Delta Live Tables é configurado para manter dados no Unity Catalog, o ciclo de vida da tabela é gerenciado pelo pipeline Delta Live Tables. Como o pipeline gerencia o ciclo de vida e as permissões da tabela:
- Quando uma tabela é removida da definição do pipeline Delta Live Tables, a exibição materializada correspondente ou a entrada da tabela de streaming é removida do Unity Catalog na próxima atualização do pipeline. 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 ao adicionar novamente a vista materializada ou a tabela de transmissão na definição do pipeline.
- A exclusão do pipeline Delta Live Tables resulta na exclusão de todas as tabelas definidas nesse pipeline. Devido a essa alteração, a interface do usuário do Delta Live Tables é atualizada para solicitar que você confirme a exclusão de um pipeline.
- As tabelas de suporte internas, incluindo aquelas usadas para suportar
APPLY CHANGES INTO
, não são diretamente acessíveis pelos usuários.
Escrever tabelas no Unity Catalog a partir de um pipeline Delta Live Tables
Para escrever suas tabelas no Unity Catalog, você deve configurar seu pipeline para trabalhar com ele em seu espaço de trabalho. Quando você criar um pipeline, selecione Catálogo Unity em Opções de armazenamento, selecione um catálogo no menu suspenso Catálogo e selecione um esquema existente ou insira o nome de um novo esquema no menu suspenso Esquema de destino . Para saber mais sobre os catálogos do Unity Catalog, consulte O que são catálogos no Azure Databricks?. Para saber mais sobre esquemas no Unity Catalog, consulte O que são esquemas no Azure Databricks?.
Introduzir dados num pipeline do Unity Catalog
Seu pipeline configurado para usar o Unity Catalog pode ler dados de:
- Tabelas geridas e externas do Unity Catalog, vistas, vistas materializadas e tabelas de streaming.
- Tabelas e visões do metastore do Hive.
- Auto Loader usando a função
read_files()
para ler a partir de locais externos do Unity Catalog. - Apache Kafka e Amazon Kinesis.
A seguir estão exemplos de leitura de tabelas de metastore do Unity Catalog e do Hive.
Ingestão em lote a partir de uma tabela do Catálogo Unity
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dlt.table
def table_name():
return spark.read.table("my_catalog.my_schema.table")
Transmitir alterações a partir de uma tabela do Catálogo Unity
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
Python
@dlt.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Ingerir dados do metastore do Hive
Um pipeline que usa o Unity Catalog pode ler dados de tabelas de metastore do Hive usando o catálogo hive_metastore
:
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Python
@dlt.table
def table3():
return spark.read.table("hive_metastore.some_schema.table")
Ingerir dados do Auto Loader
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
read_files(
<path-to-uc-external-location>,
"json"
)
Python
@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}")
)
Partilhe pontos de vista materializados
Por padrão, somente o proprietário do pipeline tem permissão para consultar conjuntos de dados criados pelo pipeline. Você pode dar 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 no Unity Catalog, consulte Manage privileges in Unity Catalog.
Conceder permissão de seleção numa tabela
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Revogar seleção em uma tabela
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Conceder criar tabela ou criar privilégios de exibição materializados
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Ver linhagem para um pipeline
A linhagem para tabelas numa pipeline Delta Live Tables é visível no Explorador de Catálogo. A interface de linhagem do Catalog Explorer mostra as tabelas ascendentes e descendentes para exibições materializadas ou tabelas de streaming num pipeline com Unity Catalog habilitado. Para saber mais sobre a linhagem de dados no Unity Catalog, consulte Capture e visualize a linhagem de dados através do Unity Catalog.
Para uma vista materializada ou tabela de streaming num pipeline Delta Live Tables com Catálogo Unity ativado, a interface do utilizador da linhagem do Catalog Explorer também será vinculada ao pipeline que produziu a vista materializada ou a tabela de streaming, se o pipeline estiver acessível no espaço de trabalho atual.
Adicionar, alterar ou excluir dados em uma tabela de streaming
Você pode usar instruções de DML (linguagem de manipulação de dados) como inserir, atualizar, excluir e mesclar para modificar tabelas de streaming publicadas no Catálogo Unity. O suporte para consultas DML em tabelas de streaming permite casos de uso, como a atualização de tabelas para conformidade com o Regulamento Geral de Proteção de Dados (GDPR).
Nota
- Não há suporte para instruções DML que modificam o esquema de tabela de uma tabela de streaming. 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 streaming podem ser executadas somente em um cluster compartilhado do Catálogo Unity ou em um armazém SQL usando o Databricks Runtime 13.3 LTS e superior.
- Como o streaming requer fontes de dados somente acréscimo, se o processamento exigir streaming de uma tabela de streaming de origem com alterações (por exemplo, por instruções DML), defina o sinalizador skipChangeCommits ao ler a tabela de streaming 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 streaming, você poderá usar uma exibição materializada (que não tem a restrição de acréscimo apenas) como tabela de destino.
A seguir estão exemplos de instruções DML para modificar registros em uma tabela de streaming.
Excluir registros com uma ID específica:
DELETE FROM my_streaming_table WHERE id = 123;
Atualizar registos com um ID específico:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Publicar tabelas com filtros de linha e máscaras de coluna
Importante
Esta funcionalidade está em Pré-visualização Pública.
Filtros de linha permitem especificar uma função que se aplica como um filtro sempre que uma verificação de tabela busca linhas. Esses filtros garantem que as consultas subsequentes retornem apenas linhas para as quais o predicado do filtro seja avaliado como true.
As máscaras de coluna permitem mascarar os valores de uma coluna sempre que uma verificação 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 como usar filtros de linha e máscaras de coluna, consulte Filtrar dados de tabela confidenciais usando filtros de linha e máscaras de coluna.
Gerenciando filtros de linha e máscaras de coluna
Filtros de linha e máscaras de coluna em exibições materializadas e tabelas de streaming devem ser adicionados, atualizados ou descartados através da instrução CREATE OR REFRESH
.
Para obter a sintaxe detalhada sobre a definição de tabelas com filtros de linha e máscaras de coluna, consulte a referência da linguagem SQL Delta Live Tables e a referência da linguagem Python Delta Live Tables .
Comportamento
A seguir estão detalhes importantes ao usar filtros de linha ou máscaras de coluna em pipelines Delta Live Tables:
-
Atualizar como proprietário: quando uma atualização de pipeline atualiza uma exibição materializada ou uma tabela de streaming, as funções de filtro de linha e máscara de coluna são executadas com os direitos do proprietário do pipeline. Isso significa que a atualização da tabela 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 de usuário do proprietário do pipeline. -
Query: Ao consultar uma exibição materializada ou uma tabela de streaming, as funções que verificam o contexto do usuário (como
CURRENT_USER
eIS_MEMBER
) são avaliadas usando o contexto de usuário do invocador. Essa abordagem impõe segurança de dados específicos do usuário e controles de acesso com base no contexto do usuário atual. - Ao criar exibições materializadas em tabelas de origem que contêm filtros de linha e máscaras de coluna, a atualização da exibição materializada é sempre uma atualização completa. Uma atualização completa 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 de data mais up-to.
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 exibição materializada ou tabela de Streaming. Essa funcionalidade permite que os usuários auditem e revisem o acesso a dados e as medidas de proteção em visualizações materializadas e tabelas de streaming.