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.

Além do suporte existente para tabelas persistentes no Hive metastore, você pode usar o Unity Catalog com seus pipelines Delta Live Tables para:

  • Defina um catálogo no Unity Catalog onde seu pipeline manterá as tabelas.

  • Leia os dados das tabelas Unity Catalog .

Seu workspace pode conter pipelines que usam o Unity Catalog ou o Hive metastore. No entanto, um único pipeline não pode gravar no Hive metastore e Unity Catalog , e os pipelines existentes não podem ser atualizados para usar Unity Catalog. Seus pipelines existentes que não usam Unity Catalog não são afetados por esta visualização e continuarão a manter os dados no 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.

As tabelas criadas em seu pipeline também podem ser consultadas em Unity Catalog clusters compartilhado usando Databricks Runtime 13.3 LTS e acima ou um SQL warehouse. As tabelas não podem ser consultadas em clusters atribuídos ou sem isolamento.

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

Requisitos

Os itens a seguir são necessários para criar tabelas no Unity Catalog a partir de um pipeline Delta Live Tables:

  • Você deve ter privilégios USE CATALOG no catálogo de destino.

  • Você deve ter privilégios CREATE MATERIALIZED VIEW e USE SCHEMA no esquema de destino se seu pipeline criar viewmaterializada.

  • Você deve ter privilégios CREATE TABLE e USE SCHEMA no esquema de destino se seu 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.

Limitações

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

  • Por default, apenas o proprietário do pipeline e os administradores workspace têm permissão para view os logs do driver dos clusters que executam um pipeline habilitado para o Unity Catalog. Para permitir o acesso de outros usuários para view os logs do driver, consulte Permitir que usuários não administradores view os logs do driver de um pipeline habilitado para o Unity Catalog.

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

  • Bibliotecas e JARs de terceiros não são suportados.

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

  • Uma view materializada criada em um pipeline Delta Live Tables não pode ser usada como fonte de transmissão fora desse pipeline, por exemplo, em outro pipeline ou em um Notebook downstream .

  • A publicação em esquemas que especificam um local de armazenamento de gerenciamento é suportada apenas no canal de 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 um local de armazenamento de esquema não for especificado, as tabelas serão armazenadas no local de armazenamento de catálogo se o catálogo de destino especificar um. 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 onde as tabelas são publicadas.

  • A aba história no Catalog Explorer não mostra história para tabelas de transmissão e view 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.

  • Você não pode usar o compartilhamento Delta com uma view materializada Delta Live Tables ou uma tabela transmitida publicada no 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.

  • clusters de nó único não são compatíveis com pipelines habilitados para Unity Catalog. Como o Delta Live Tables pode criar clusters de nó único para executar pipelines menores, seu pipeline pode falhar com uma mensagem de erro referenciando single-node mode. Se isso ocorrer, certifique-se de especificar pelo menos um worker ao definir suas configurações compute .

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

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

  • Você não pode usar filtros de linha ou máscaras de coluna com view materializada ou tabelas de transmissão publicadas no Unity Catalog.

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 a definição de uma view materializada inclua uma cláusula COUNT(DISTINCT field_a). Mesmo que a definição view materializada inclua apenas a cláusula agregada COUNT DISTINCT, os arquivos subjacentes conterão uma lista dos valores reais de field_a.

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 do pipeline Delta Live Tables, a view materializada correspondente ou a entrada da tabela transmitida é removida do Unity Catalog na próxima atualização do 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 view materializada ou a tabela transmitida de volta à 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 Delta Live Tables é atualizada para solicitar que você confirme a exclusão de um pipeline.

  • Tabelas de apoio internas, incluindo tabelas de apoio 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

Para gravar suas tabelas no Unity Catalog, ao criar um pipeline, selecione Unity Catalog em Opções de armazenamento, selecione um catálogo no menu suspenso Catálogo e selecione um nome de banco de dados no menu suspenso Esquema de destino . Para saber mais sobre os catálogos do Unity Catalog, consulte Catálogos. Para saber mais sobre esquemas no Unity Catalog, consulte Esquemas.

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 cloud_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 LIVE TABLE
  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 LIVE TABLE
  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
  cloud_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 visualizações materializadas (tabelas dinâmicas)

Por default, as tabelas criadas por um pipeline podem ser query apenas pelo proprietário do pipeline. Você pode dar a outros usuários a capacidade de query uma tabela usando instruções GRANT e pode revogar o acesso query usando instruções REVOKE . Para obter mais informações sobre privilégios no Unity Catalog, consulte gerenciar privilégios no Unity Catalog.

Conceder select em uma tabela

GRANT SELECT ON TABLE
  my_catalog.my_schema.live_table
TO
  `user@databricks.com`

Revogar seleção em uma tabela

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
FROM
  `user@databricks.com`

Conceder criar tabela ou criar privilégios de 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. Para tabelas de exibição materializada ou de transmissão em um pipeline habilitado para o Unity Catalog, a interface de linha do Catalog Explorer mostra as tabelas upstream e downstream. Para saber mais sobre a linhagem do Unity Catalog, consulte Captura e view linhagem de dados usando o Unity Catalog.

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

Você pode usar instruções DML ( linguagem de manipulação de dados ), incluindo instruções insert, update, delete e merge , para modificar tabelas de transmissão publicadas no Unity Catalog. O suporte para query DML em tabelas de transmissão permite casos de uso como atualização de tabelas para compliance com as Regulamentações Gerais de Proteção de Dados (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;