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.
O Databricks recomenda a configuração de Pipelines Declarativos do Lakeflow com o Catálogo do Unity.
Os pipelines configurados com o Unity Catalog publicam todas as visualizações materializadas e tabelas de streaming definidas no catálogo e esquema especificados. Os pipelines do Unity Catalog podem ler de outras tabelas e volumes do Unity Catalog.
Para gerenciar permissões nas tabelas criadas por um pipeline do Unity Catalog, use GRANT e REVOKE.
Observação
Este artigo discute a funcionalidade do modo de publicação padrão atual para pipelines. Pipelines criados antes de 5 de fevereiro de 2025 podem usar o modo de publicação herdado e o esquema virtual LIVE
. Confira Esquema LIVE (herdado).
Requisitos
Para criar tabelas de streaming e exibições materializadas em um esquema de destino no Catálogo do Unity, você deve ter as seguintes permissões no esquema e no catálogo pai:
USE CATALOG
privilégios no catálogo de destino.- Privilégios
CREATE MATERIALIZED VIEW
eUSE SCHEMA
no esquema de destino se o pipeline criar exibições materializadas. - Privilégios
CREATE TABLE
eUSE SCHEMA
no esquema de destino se o pipeline criar tabelas de streaming.
Se o seu pipeline criar novos esquemas, você deverá ter privilégios USE CATALOG
e CREATE SCHEMA
no catálogo de destino.
Computação necessária para executar um pipeline habilitado para Catálogo do Unity:
- Modo de acesso padrão (modo de acesso compartilhado anteriormente). Um pipeline habilitado para o Catálogo do Unity não pode ser executado em uma computação dedicada (anteriormente computação de usuário único). Confira as limitações do modo de acesso Padrão no Catálogo do Unity.
A computação necessária para consultar tabelas criadas pelo Lakeflow Declarative Pipelines usando o Catálogo do Unity (incluindo tabelas de streaming e exibições materializadas) inclui qualquer uma das seguintes opções:
- Armazenamentos SQL
- Computação em modo de acesso padrão no Databricks Runtime 13.3 LTS ou superior.
- Modo de Acesso Dedicado à Computação, se o controle de acesso refinado estiver habilitado na computação dedicada (ou seja, estiver em execução no Databricks Runtime 15.4 ou acima e a computação sem servidor estiver habilitada para o workspace). Para obter mais informações, consulte o controle de acesso refinado na computação dedicada.
- O modo de acesso dedicado computa no 13.3 LTS até o 15.3 somente se o proprietário da tabela executar a consulta.
Aplicam-se limitações de computação adicionais. Consulte a seção a seguir.
Limitações
Veja a seguir as limitações ao usar o Catálogo do Unity com Pipelines Declarativos do Lakeflow:
- Por padrão, somente o proprietário do pipeline e os administradores do workspace podem visualizar os logs de driver da computação que executa um pipeline habilitado para Unity Catalog. Para permitir que outros usuários acessem os logs de driver, consulte Permitir que usuários não administradores exibam os logs de driver de um pipeline habilitado para Catálogo do Unity.
- Os pipelines existentes que usam o metastore do Hive não podem ser atualizados para usar o Catálogo do Unity. Para migrar um pipeline existente que grava no metastore do Hive, você deve criar um novo pipeline e reingerir dados da(s) fonte(s) de dados. Veja Crie um pipeline do Unity Catalog clonando um pipeline do metastore do Hive.
- Não é possível criar um pipeline habilitado para Catálogo do Unity em um workspace anexado a um metastore que foi criado durante a visualização pública do Catálogo do Unity. Consulte Atualizar para a herança de privilégios.
- Não há suporte para JARs. Somente bibliotecas Python de terceiros são compatíveis. Consulte Gerenciar dependências do Python para Pipelines Declarativos do Lakeflow.
- Não há suporte para consultas de linguagem de manipulação de dados (DML) que modificam o esquema de uma tabela de streaming.
- Uma visualização materializada criada em um pipeline 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 para visualizações materializadas e 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 de esquema e catálogo não forem especificados, as tabelas serão armazenadas no local de armazenamento raiz do metastore.
- A guia Histórico do Explorador de Catálogos não mostra o histórico de exibições materializadas.
- Não há suporte para a propriedade
LOCATION
ao definir uma tabela. - Os pipelines habilitados para o Unity Catalog não podem publicar no metastore do Hive.
- O suporte a UDF do Python está em Visualização Pública.
Observação
Os arquivos subjacentes que dão suporte a exibições materializadas podem incluir dados de tabelas upstream (incluindo possíveis informações de identificação pessoal) que não aparecem na definição de exibição materializada. Esses dados são adicionados automaticamente ao armazenamento subjacente para dar 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 upstream tabelas 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 a definição de uma exibição materializada inclua uma cláusula COUNT(DISTINCT field_a)
. Embora a definição de exibição materializada inclua apenas a cláusula de agregação COUNT DISTINCT
, os arquivos subjacentes conterão uma lista dos valores reais de field_a
.
Posso usar os pipelines do metastore do Hive e do Unity Catalog juntos?
Seu workspace pode conter pipelines que usam o Catálogo do Unity e o metastore do Hive herdado. No entanto, um único pipeline não pode gravar no metastore do Hive e no Unity Catalog. Os pipelines existentes que gravam no 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 reingerir dados da(s) fonte(s) de dados. Veja Crie um pipeline do Unity Catalog clonando um pipeline do metastore do Hive.
Os pipelines existentes que não usam o Catálogo do Unity não são afetados pela criação de novos pipelines configurados com o Catálogo do Unity. Esses pipelines continuam a persistir dados no metastore do Hive usando o local de armazenamento configurado.
A menos que especificado de outra maneira neste documento, todas as fontes de dados existentes e a funcionalidade de Pipelines Declarativos do Lakeflow são compatíveis com pipelines que utilizam o Catálogo do Unity. As interfaces Python e SQL têm suporte com pipelines que usam o Catálogo do Unity.
Alterações na funcionalidade existente
Quando o Lakeflow Declarative Pipelines é configurado para persistir dados no Catálogo do Unity, o pipeline gerencia o ciclo de vida e as permissões da tabela. Como resultado:
- Quando uma tabela é removida da definição do pipeline, a próxima atualização do pipeline marcará a visualização materializada correspondente ou a entrada da tabela de streaming como inativa. Tabelas inativas ainda podem ser consultadas, mas não serão atualizadas. Para limpar exibições materializadas ou tabelas de streaming, você pode realizar
DROP
explicitamente na tabela.- Você pode recuperar todas as tabelas descartadas dentro de 7 dias usando o
UNDROP
comando. - Para manter o comportamento herdado em que a exibição materializada ou a entrada da tabela de streaming é removida do Catálogo do Unity na próxima atualização de pipeline, defina a configuração
"pipelines.dropInactiveTables": "true"
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 em 7 dias adicionando a exibição materializada ou a tabela de streaming de volta à definição do pipeline.
- Você pode recuperar todas as tabelas descartadas dentro de 7 dias usando o
- Excluir o pipeline resulta na exclusão de todas as tabelas definidas nesse pipeline. Devido a essa alteração, a interface do usuário do Lakeflow Declarative Pipelines é atualizada para solicitar que você confirme a exclusão de um pipeline.
- As tabelas de suporte internas, incluindo aquelas usadas para oferecer suporte ao
AUTO CDC ... INTO
, não são diretamente acessíveis pelos usuários.
Gravar tabelas no Unity Catalog usando Lakeflow Declarative Pipelines
Para gravar suas tabelas no Unity Catalog, você deve configurar seu pipeline para trabalhar com elas por meio do seu espaço de trabalho. Ao criar um pipeline, selecione o Catálogo do Unity em Opções de armazenamento, selecione um catálogo no menu de seleção Catálogo e depois um esquema existente ou insira o nome para um novo esquema no menu de seleção Esquema de destino. Para saber mais sobre catálogos do Catálogo do Unity, consulte O que são catálogos no Azure Databricks?. Para saber mais sobre esquemas no Catálogo do Unity, consulte O que são esquemas no Azure Databricks?.
Ingerir dados em um pipeline do Catálogo do Unity
Seu pipeline configurado para usar o Catálogo do Unity pode ler dados de:
- Tabelas gerenciadas e externas do Unity Catalog, visualizações, visualizações materializadas e tabelas de streaming.
- Exibições e tabelas de metastore do Hive.
- Carregador Automático usando a função
read_files()
para ler de locais externos do Catálogo do Unity. - Apache Kafka e Amazon Kinesis.
Veja a seguir exemplos de leitura das tabelas do Catálogo do Unity e do metastore do Hive.
Ingestão em lote de uma tabela do Catálogo do 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 de uma tabela do Catálogo do 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 do metastore do Hive usando o hive_metastore
catalog:
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 Carregador Automático
SQL
CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
"/path/to/uc/external/location",
format => "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}")
)
Compartilhar exibições materializadas
Por padrão, somente o proprietário do pipeline tem permissão para consultar conjuntos de dados criados pelo pipeline. Você pode conceder a outros usuários a capacidade de consultar uma tabela usando instruções GRANT e revogar o acesso à consulta usando instruções REVOKE. Para obter mais informações sobre privilégios no Unity Catalog, confira Gerenciar privilégios no Unity Catalog.
Conceder seleção em uma 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 privilégios de criação de tabela ou de exibição materializada
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Exibir a linhagem de um pipeline
A linhagem das tabelas em Pipelines Declarativos do Lakeflow é visível no Explorador de Catálogos. A interface do usuário de linhagem do Explorador de Catálogos mostra as tabelas de upstream e de downstream para exibições materializadas ou tabelas de streaming em um pipeline habilitado para Catálogo do Unity. Para saber mais sobre a linhagem do Catálogo do Unity, consulte Exibir linhagem de dados usando o Catálogo do Unity.
Para uma exibição materializada ou tabela de streaming em um pipeline DLT habilitado para o Catálogo do Unity, a interface de linhagem do Catalog Explorer também será vinculada ao pipeline que produziu a exibição materializada ou 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 linguagem de manipulação de dados (DML), incluindo instruções de inserção, atualização, exclusão e mesclagem, para modificar tabelas de streaming publicadas no Catálogo do 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 sobre a Proteção de Dados (RGPD).
Observação
- Não há suporte para instruções DML que modificam o esquema de tabela de uma tabela de streaming. Verifique se as instruções DML não tentam desenvolver o esquema da tabela.
- Instruções DML que atualizam uma tabela de streaming só podem ser executadas em um cluster compartilhado do Catálogo do Unity ou em um SQL warehouse usando o Databricks Runtime 13.3 LTS e versões superiores.
- Como o streaming requer fontes de dados que permitam apenas adições, se o seu processamento exigir streaming de uma tabela de streaming de origem com alterações (por exemplo, por comandos 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 tenha a restrição somente de acréscimo) como a tabela de destino.
Veja a seguir exemplos de instruções DML para modificar registros em uma tabela de streaming.
Exclua registros com uma ID específica:
DELETE FROM my_streaming_table WHERE id = 123;
Atualize registros com uma ID específica:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Publicar tabelas com filtros de linha e máscaras de coluna
Importante
Esse recurso está em Visualização Pública.
Os 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 de filtro é 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 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 por meio da instrução CREATE OR REFRESH
.
Para obter uma sintaxe detalhada sobre como definir tabelas com filtros de linha e máscaras de coluna, consulte a referência de linguagem SQL do Lakeflow Declarative Pipelines e a referência de linguagem Python do Lakeflow Declarative Pipelines.
Comportamento
Estes são detalhes importantes ao usar filtros de linha ou máscaras de coluna em Pipelines Declarativos do Lakeflow:
- 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. - Consulta: 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 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 do usuário atual. - Ao criar exibições materializadas sobre 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 origem 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 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 examinem as medidas de acesso e proteção de dados em exibições materializadas e tabelas de streaming.