Use o Unity Catalog com seus pipelines Delta Live Tables

Visualização

O suporte ao Delta Live Tables para Unity Catalog está em Visualização pública.

Databricks Recomenda configurar o pipeline Delta Live Tables com Unity Catalog.

O pipeline configurado com Unity Catalog publica todas as visualizações materializadas definidas e tabelas de transmissão no catálogo e no esquema especificados. Unity Catalog O pipeline pode ler de outras tabelas e volumes do site Unity Catalog.

Para gerenciar permissões nas tabelas criadas por um pipeline do Unity Catalog, use GRANT e REVOKE.

Requisitos

Permissões necessárias para criar tabelas no Unity Catalog a partir de um pipeline do Delta Live Tables:

  • USE CATALOG privilégios no catálogo de destino.

  • CREATE MATERIALIZED VIEW e USE SCHEMA privilégios no esquema de destino se o site pipeline criar uma visualização materializada.

  • CREATE TABLE e USE SCHEMA privilégios no esquema de destino se o site pipeline criar tabelas de transmissão.

  • Se um esquema de destino não for especificado nas configurações do pipeline, você deverá ter privilégios CREATE MATERIALIZED VIEW ou CREATE TABLE em pelo menos um esquema no catálogo de destino.

computação necessária para executar um Unity Catalog-enabled pipeline:

A computação necessária para consultar tabelas criadas por um Delta Live Tables pipeline usando Unity Catalog (incluindo tabelas de transmissão e visualização materializada) inclui qualquer um dos seguintes itens:

  • SQL warehouses

  • Modo de acesso compartilhado clusters em Databricks Runtime 13.3 LTS ou acima.

  • Modo de acesso de usuário único (ou "atribuído") clusters em 13.3 LTS e acima, 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

Veja a seguir as limitações ao usar o Unity Catalog com Delta Live Tables:

  • Por default, somente o proprietário do pipeline e os administradores do workspace podem view o driver logs do cluster 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 no Hive metastore, você deve criar um novo pipeline e reingerir dados da fonte de dados(s).

  • Os JARs não são suportados. Somente a Python biblioteca de terceiros é compatível. Consulte gerenciar as dependências do Python para o pipeline do Delta Live Tables .

  • query de linguagem de manipulação de dados (DML) que modificam o esquema de uma tabela de transmissão não são suportadas.

  • Um view materializado criado em um Delta Live Tables pipeline não pode ser usado como fonte de transmissão fora desse pipeline, por exemplo, em outro pipeline ou em um Notebook downstream.

  • Se um pipeline for publicado em um esquema com um local de armazenamento gerenciado, o esquema poderá ser alterado em uma atualização subsequente, mas somente se o esquema atualizado usar o mesmo local de armazenamento que o esquema especificado anteriormente.

  • As tabelas são armazenadas no local de armazenamento do esquema de destino. 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 das tabelas de transmissão ou 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.

  • UDFs Python não são suportados.

  • O senhor não pode usar Delta Sharing com uma Delta Live Tables materializada view ou uma tabela de transmissão publicada em Unity Catalog.

  • Você não pode usar a função com valor de tabela event_log em um pipeline ou query para acessar os logs de eventos de vários pipelines.

  • Você não pode compartilhar uma view criada na função de valor de tabela event_log com outros usuários.

  • O nó único clusters não é compatível com o pipeline habilitado para o Unity Catalog. Como o site Delta Live Tables pode criar um nó único cluster para executar um pipeline menor, o site pipeline pode falhar com uma mensagem de erro que faz referência a single-node mode. Se isso ocorrer, especifique pelo menos um worker quando o senhor configurar compute. Consulte Configurar computação para um pipeline do Delta Live Tables.

Observação

Os arquivos subjacentes que suportam view materializada podem incluir dados de tabelas upstream (incluindo possíveis informações de identificação pessoal) que não aparecem na definição view materializada. Esses dados são adicionados automaticamente ao armazenamento subjacente para oferecer suporte à atualização incremental da view materializada.

Como os arquivos subjacentes de uma view materializada podem expor dados de tabelas upstream que não fazem parte do esquema view materializada, o 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 o 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.

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.

A menos que especificado de outra forma neste documento, todas as funcionalidades existentes de fonte de dados e Delta Live Tables são compatíveis com pipelines que usam o Unity Catalog. As interfaces Python e SQL são compatíveis com pipelines que usam o Unity Catalog.

Mudanças na funcionalidade existente

Quando o Delta Live Tables é configurado para persistir dados no Unity Catalog, o ciclo de vida da tabela é gerenciado pelo pipeline do Delta Live Tables. Porque o pipeline gerencia o ciclo de vida e as permissões da tabela:

  • Quando uma tabela é removida da definição Delta Live Tables pipeline , a entrada correspondente da tabela materializada view ou de transmissão é removida de Unity Catalog na próxima atualização 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 adicionando a tabela materializada view ou de transmissão novamente à definição 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 UI do Delta Live Tables 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 Delta Live Tables

Observação

Se o senhor não selecionar um catálogo e um esquema de destino para um pipeline, as tabelas não serão publicadas no Unity Catalog e só poderão ser acessadas por consultas no mesmo pipeline.

Para gravar suas tabelas no Unity Catalog, ao 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 de:

  • Unity Catalog gerenciado e tabelas externas, view, view materializada e tabelas transmitidas.

  • Tabelas e view Hive metastore.

  • Auto Loader usando a função read_files() para ler de locais externos Unity Catalog .

  • Apache Kafka e Amazon Kinesis.

Veja a seguir exemplos de leitura do Unity Catalog e tabelas Hive metastore .

ingestão de lotes de uma tabela do Unity Catalog

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;
@dlt.table
def table_name():
  return spark.table("my_catalog.my_schema.table")

alterações transmitidas de uma tabela Unity Catalog

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 do Hive metastore

Um pipeline que usa Unity Catalog pode ler dados de tabelas Hive metastore usando o catálogo hive_metastore:

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;
@dlt.table
def table3():
  return spark.table("hive_metastore.some_schema.table")

Ingerir dados do Auto Loader

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  read_files(
    <path-to-uc-external-location>,
    "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 select 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 para criar tabela ou criar visualizaçã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 um pipeline do Delta Live Tables é 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 view materializada ou tabela de transmissão em um pipeline Delta Live Tables habilitado para Catálogo do Unity, a UI de linhagem do Catalog Explorer também se vinculará ao pipeline que produziu a view materializada ou tabela de transmissão se o pipeline estiver acessível no workspace atual.

Adicionar, alterar ou excluir dados em uma tabela transmitida

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).

Observação

  • As instruções DML que modificam o esquema de tabela de uma tabela de transmissão 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 podem ser executadas somente em um Unity Catalog cluster compartilhado ou em um SQL warehouse usando Databricks Runtime 13.3 LTS e acima.

  • Como a transmissão requer fonte de dados somente anexada, se o seu processamento exigir 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. Caso o seu processamento não necessite de uma tabela de transmissão, você pode utilizar uma view materializada (que não possui a restrição somente de acréscimo) como tabela de destino.

A seguir estão exemplos de instruções DML para modificar registros em uma tabela de transmissão.

Excluir registros com um ID específico:

DELETE FROM my_streaming_table WHERE id = 123;

Atualizar registros 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

Visualização

Este recurso está em prévia pública.

Os filtros de linha permitem que o senhor especifique uma função que se aplica como um filtro sempre que uma varredura de tabela obtém linhas. Esses filtros garantem que as consultas subsequentes retornem apenas 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.

Gerenciamento de 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 Referência de linguagem SQL do Delta Live Tables e Referência de linguagem Python do Delta Live Tables.

Comportamento

A seguir, detalhes importantes sobre o uso de filtros de linha ou máscaras de coluna no pipeline Delta Live Tables:

  • 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 e IS_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 e IS_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 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 as 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.