Compartilhar via


Usar o Unity Catalog com seus pipelines do Delta Live Tables

Importante

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

Além do suporte existente para manter tabelas no metastore do Hive, você pode usar o Catálogo do Unity com os pipelines do Delta Live Tables para:

  • Defina um catálogo no Catálogo do Unity em que o pipeline persistirá as tabelas.
  • Ler dados de tabelas do Catálogo do Unity.

Seu workspace pode conter pipelines que usam o Catálogo do Unity ou o metastore do Hive. No entanto, um único pipeline não pode gravar no metastore do Hive e no Catálogo do Unity e os pipelines existentes não podem ser atualizados para usar o Catálogo do Unity. Os pipelines existentes que não usam o Catálogo do Unity não são afetados por esta versão prévia e continuarão a persistir 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 do Delta Live Tables têm suporte com pipelines que usam o Catálogo do Unity. As interfaces Python e SQL têm suporte com pipelines que usam o Catálogo do Unity.

As tabelas criadas no pipeline também podem ser consultadas em clusters compartilhados do Catálogo do Unity usando o Databricks Runtime 13.3 LTS e versões superiores ou um SQL warehouse. As tabelas não podem ser consultadas de clusters de isolamento ou atribuídos.

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

Requisitos

Os seguintes itens são necessários para criar tabelas no Catálogo do Unity a partir de um pipeline do Delta Live Tables:

  • Você deve ter privilégios USE CATALOG no catálogo de destino.
  • Você deverá ter privilégios CREATE MATERIALIZED VIEW e USE SCHEMA no esquema de destino se o pipeline criar exibições materializadas.
  • Você deverá ter privilégios CREATE TABLE e USE SCHEMA no esquema de destino se o pipeline criar tabelas de streaming.
  • 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.

Limitações

Veja a seguir as limitações ao usar o Catálogo do Unity com o Delta Live Tables:

  • Por padrão, somente o proprietário do pipeline e os administradores do workspace têm permissão para exibir os logs do driver do cluster que executa um pipeline habilitado para o Catálogo do Unity. Para habilitar o acesso de outros usuários para exibir os logs do driver, consulte Permitir que usuários não administradores exibam os logs do driver de um pipeline habilitado para o 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 pipeline e ingerir novamente os dados das fontes de dados.

  • Não é possível criar um pipeline habilitado para Catálogo do Unity em um workspace anexado a um metastore criado durante a versão prévia pública do Catálogo do Unity. Confira Atualizar para herança de privilégios.

  • Não há suporte para JARs. A instalação de bibliotecas de terceiros tem suporte apenas para bibliotecas do Python. Confira Gerenciar dependências do Python para pipelines do Delta Live Tables.

  • Não há suporte para consultas de linguagem de manipulação de dados (DML) que modificam o esquema de uma tabela de streaming.

  • Uma exibição materializada criada em um pipeline do 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.

  • A publicação em esquemas que especificam um local de armazenamento gerenciado só é compatível com o canal de pré-visualização.

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

  • Se o esquema de destino especificar um local de armazenamento, todas as tabelas serão armazenadas lá. Se nenhum local de armazenamento de esquema for especificado, as tabelas serão armazenadas no local de armazenamento do catálogo se o catálogo de destino especificar esse local. 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 em que as tabelas forem publicadas.

  • A guia Histórico no Explorador de Catálogos não mostra o histórico de tabelas de streaming e exibições materializadas.

  • Não há suporte para a propriedade LOCATION ao definir uma tabela.

  • Os pipelines habilitados para Catálogo do Unity não podem publicar no metastore do Hive.

  • O suporte a UDF do Python está em Visualização Pública. Para usar UDFs do Python, seu pipeline precisa usar o canal de versão prévia.

  • Não é possível usar o Compartilhamento Delta com uma exibição materializada do Delta Live Tables ou uma tabela de streaming publicada no Catálogo do Unity.

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

  • Não é possível compartilhar uma exibição criada sobre a event_logfunção com valor de tabela com outros usuários.

  • Não há suporte para clusters de nó único com pipelines habilitados para Catálogo do Unity. Como o Delta Live Tables pode criar um cluster de nó único para executar pipelines menores, o pipeline pode falhar com uma mensagem de erro referenciando single-node mode. Se isso ocorrer, especifique pelo menos um trabalho ao definir as configurações de computação.

  • As tabelas criadas em um pipeline habilitado para Catálogo do Unity não podem ser consultadas de clusters de isolamento ou atribuídos. Para consultar tabelas criadas por um pipeline do Delta Live Tables, você deve usar um cluster de modo de acesso compartilhado usando o Databricks Runtime 13.3 LTS e acima ou um SQL warehouse.

  • O Delta Live Tables usa um cluster compartilhado para executar um pipeline habilitado para Catálogo do Unity. Um pipeline habilitado para Catálogo do Unity não pode ser executado em um cluster atribuído. Para saber mais sobre as limitações do modo de acesso compartilhado com o Catálogo do Unity, consulte Limitações do modo de acesso compartilhado no Catálogo do Unity.

  • Você não pode usar filtros de linha ou máscaras de coluna com exibições materializadas ou tabelas de streaming publicadas no Catálogo do Unity.

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.

Alterações na funcionalidade existente

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

  • Quando uma tabela é removida da definição de pipeline do Delta Live Tables, a exibição materializada correspondente ou a entrada da tabela de streaming é removida do Catálogo do Unity na próxima atualização de pipeline. Os dados reais são retidos por um período de tempo para que possam ser recuperados se forem excluídos por engano. Os dados podem ser recuperados adicionando a exibição materializada ou a tabela de streaming de volta à definição do pipeline.
  • Excluir o pipeline do 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.
  • Tabelas de backup internas, incluindo tabelas de backup usadas para dar suporte a APPLY CHANGES INTO, não são diretamente acessíveis pelos usuários.

Gravar tabelas no Catálogo do Unity de um pipeline do Delta Live Tables

Observação

Se você não selecionar um catálogo e 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 o Unity Catalog 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 Unity Catalog

Seu pipeline configurado para usar o Catálogo do Unity pode ler dados de:

  • Tabelas gerenciadas e externas do Catálogo do Unity, exibições, exibições materializadas e tabelas de streaming.
  • Exibições e tabelas de metastore do Hive.
  • Carregador Automático usando a função cloud_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.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 Catálogo do Unity 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.table("hive_metastore.some_schema.table")

Ingerir dados do Carregador Automático

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  cloud_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}")
 )

Compartilhar exibições materializadas

Por padrão, as tabelas criadas por um pipeline só podem ser consultadas pelo proprietário do pipeline. Você pode dar 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 de tabelas em um pipeline do Delta Live Tables é visível no Explorador de Catálogos. Para exibições materializadas ou tabelas de streaming em um pipeline habilitado para Catálogo do Unity, a interface do usuário de linhagem do Explorador de Catálogos mostra as tabelas de upstream de downstream. Para saber mais sobre a linhagem do Catálogo do Unity, consulte Capturar e exibir linhagem de dados usando o Catálogo do Unity.

Para uma exibição materializada ou uma tabela de streaming em um pipeline do Delta Live Tables habilitado para Catálogo do Unity, a interface do usuário de linhagem do Explorador de Catálogos também será vinculada ao pipeline que produziu a exibição materializada ou a tabela de streaming se o pipeline estiver acessível a partir do workspace 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 (GDPR).

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 exige 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 somente 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 uma versão prévia.

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 Filtrar dados confidenciais da tabela com filtros de linha e máscaras de coluna.

Gerenciar 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 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 do Delta Live Tables e a Referência da linguagem Python do Delta Live Tables.

Comportamento

Veja a seguir detalhes importantes ao usar filtros de linha ou máscaras de coluna em pipelines do 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 e IS_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 e IS_MEMBER) são avaliadas usando o contexto do usuário que fez a chamada. 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 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_SCHEMAou o Explorador de Catálogos 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.