Share via


Utilizar o Unity Catalog com os seus pipelines Delta Live Tables

Importante

O suporte do Delta Live Tables para o Unity Catalog está em Pré-visualização Pública.

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

  • Defina um catálogo no Unity Catalog onde seu pipeline persistirá tabelas.
  • Leia os dados das tabelas do Unity Catalog.

Seu espaço de trabalho pode conter pipelines que usam o Unity Catalog ou o metastore do Hive. No entanto, um único pipeline não pode gravar no metastore do Hive e no Unity Catalog e os pipelines existentes não podem ser atualizados para usar o Unity Catalog. Seus pipelines existentes que não usam o Unity Catalog não são afetados por essa visualização 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 Delta Live Tables são suportadas com pipelines que usam o Unity Catalog. As interfaces Python e SQL são suportadas com pipelines que usam o Unity Catalog.

As tabelas criadas em seu pipeline também podem ser consultadas a partir de clusters compartilhados do Unity Catalog usando o Databricks Runtime 13.3 LTS e superior ou um armazém SQL. As tabelas não podem ser consultadas a partir de clusters de isolamento atribuídos ou inexistentes.

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

Requisitos

O seguinte é necessário para criar tabelas no Unity Catalog a partir de um pipeline Delta Live Tables:

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

Limitações

A seguir estão as limitações ao usar o Unity Catalog com Delta Live Tables:

  • Por padrão, apenas o proprietário do pipeline e os administradores do espaço de trabalho têm permissão para exibir os logs de driver do cluster que executa um pipeline habilitado para Catálogo Unity. Para habilitar o acesso de outros usuários para exibir os logs de driver, consulte Permitir que usuários não administradores visualizem os logs de driver de um pipeline habilitado para Catálogo Unity.

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

  • Não é possível criar um pipeline habilitado para Catálogo Unity em um espaço de trabalho anexado a um metastore criado durante a visualização pública do Catálogo Unity. Consulte Atualizar para herança de privilégios.

  • Não há suporte para bibliotecas e JARs de terceiros.

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

  • A publicação em esquemas que especificam um local de armazenamento gerenciado é suportada apenas no canal de visualização.

  • Se um pipeline publicar 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 do 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 serão publicadas.

  • A guia Histórico no Catalog Explorer não mostra o histórico de tabelas de streaming e exibições materializadas.

  • A LOCATION propriedade 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. Para usar UDFs do Python, seu pipeline deve usar o canal de visualização.

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

  • Não é possível usar a event_logfunção de valor de tabela em um pipeline ou consulta para acessar os logs de eventos de vários pipelines.

  • Não é possível compartilhar um modo de exibição criado sobre a função de valor de event_logtabela com outros usuários.

  • Não há suporte para clusters de nó único com pipelines habilitados para Unity Catalog. Como o Delta Live Tables pode criar um cluster de nó único para executar pipelines menores, seu pipeline pode falhar com uma mensagem de erro fazendo referência a single-node mode. Se isso ocorrer, certifique-se de especificar pelo menos um trabalhador ao definir suas configurações de computação.

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

  • O Delta Live Tables usa um cluster de modo de acesso compartilhado para executar um pipeline habilitado para Unity Catalog. Um pipeline habilitado para Unity Catalog não pode ser executado em um cluster atribuído. 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.

  • Não é possível usar filtros de linha ou máscaras de coluna com exibições materializadas ou tabelas de streaming publicadas no Unity Catalog.

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

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. Porque o pipeline gere 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 de tempo para que possam ser recuperados se foram excluídos por engano. Os dados podem ser recuperados adicionando a visão materializada ou a tabela de fluxo contínuo 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 do Delta Live Tables é atualizada para solicitar que você confirme a exclusão de um pipeline.
  • As tabelas de suporte internas, incluindo as tabelas de suporte 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

Nota

Se você 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 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 Catálogo Unity, consulte Catálogos. Para saber mais sobre esquemas no Unity Catalog, consulte Esquemas.

Ingerir dados em um pipeline do Catálogo Unity

Seu pipeline configurado para usar o Unity Catalog pode ler dados de:

  • Unity Catalog gerenciado e tabelas externas, visualizações, visualizações materializadas e tabelas de streaming.
  • Tabelas e exibições do metastore do Hive.
  • Auto Loader usando a função para ler a cloud_files() 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 de uma tabela do Catálogo Unity

SQL

CREATE OR REFRESH LIVE TABLE
  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 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 hive_metastore catálogo:

SQL

CREATE OR REFRESH LIVE TABLE
  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 Auto Loader

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}")
 )

Partilhar vistas materializadas (mesas ao vivo)

Por padrão, as tabelas criadas por um pipeline podem ser consultadas somente pelo proprietário do 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 Catálogo Unity, consulte Gerenciar privilégios no Catálogo Unity.

Conceder seleção 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 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 em um pipeline Delta Live Tables é visível no Catalog Explorer. Para exibições materializadas ou tabelas de streaming em um pipeline habilitado para Catálogo Unity, a interface do usuário da linhagem do Catalog Explorer mostra as tabelas upstream e downstream. Para saber mais sobre a linhagem do Catálogo Unity, consulte Capturar e exibir linhagem de dados usando o Catálogo Unity.

Para uma exibição materializada ou tabela de streaming em um pipeline Delta Live Tables habilitado para Catálogo Unity, a interface do usuário da linhagem do Catalog Explorer 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 espaço de trabalho atual.

Adicionar, alterar ou excluir dados em uma tabela de streaming

Você pode usar instruções DML (linguagem de manipulação de dados), incluindo instruções de inserção, atualização, exclusão e mesclagem, para modificar tabelas de streaming publicadas no Unity Catalog. 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;