Pular para o conteúdo principal

Desenvolver o pipeline de DLT

O desenvolvimento e o teste do código do pipeline são diferentes de outras cargas de trabalho do Apache Spark. Este artigo fornece uma visão geral da funcionalidade suportada, das práticas recomendadas e das considerações ao desenvolver o código pipeline. Para obter mais recomendações e práticas recomendadas, consulte Aplicação das práticas recomendadas de desenvolvimento software e DevOps ao pipeline de DLT.

nota

O senhor deve adicionar o código-fonte a uma configuração do pipeline para validar o código ou executar uma atualização. Consulte Configurar um pipeline DLT.

Quais arquivos são válidos para o código-fonte do pipeline?

O código do pipeline DLT pode ser Python ou SQL. O senhor pode ter uma mistura de arquivos de código-fonte Python e SQL fazendo o backup de um único pipeline, mas cada arquivo só pode conter uma linguagem. Consulte Desenvolver código de pipeline com Python e Desenvolver código de pipeline com SQL.

O senhor pode usar os arquivos Notebook e workspace ao especificar o código-fonte para um pipeline. Os arquivos do espaço de trabalho representam scripts Python ou SQL criados no IDE de sua preferência ou no editor de arquivos Databricks. Consulte O que são arquivos workspace?

Se o senhor desenvolver o código Python como módulos ou biblioteca, deverá instalar e importar o código e, em seguida, chamar os métodos de um Notebook Python ou de um arquivo workspace configurado como código-fonte. Consulte gerenciar Python dependências para o pipeline DLT.

nota

Se precisar usar um comando SQL arbitrário em um notebook Python, o senhor pode usar o padrão de sintaxe spark.sql("<QUERY>") para executar SQL como código Python.

Unity Catalog As funções permitem que o senhor registre funções Python arbitrárias definidas pelo usuário para uso em SQL. Consulte Funções definidas pelo usuário (UDFs) no Unity Catalog.

Visão geral do recurso de desenvolvimento de DLT

A DLT amplia e aproveita muitos Databricks recursos e introduz novos recursos e conceitos. A tabela a seguir apresenta uma breve visão geral dos conceitos e recursos que dão suporte ao desenvolvimento do código pipeline:

Recurso

Descrição

Modo de desenvolvimento

Novos pipelines são configurados para execução em modo de desenvolvimento pelo site default. A Databricks recomenda o uso do modo de desenvolvimento para desenvolvimento e testes interativos. Consulte Modos de desenvolvimento e produção.

Validar

Uma atualização Validate verifica a correção do código-fonte do pipeline sem executar uma atualização em nenhuma tabela. Consulte Verificar se há erros em um pipeline sem esperar a atualização das tabelas.

cadernos

Notebook configurado como código-fonte para um DLT pipeline oferece opções interativas para validar o código e executar atualizações. Consulte Desenvolver e depurar o pipeline DLT no Notebook.

Parâmetros

Aproveite os parâmetros no código-fonte e nas configurações do pipeline para simplificar os testes e a extensibilidade. Consulte Usar parâmetros com o pipeline DLT.

Databricks Asset Bundles

Databricks Os ativo Bundles permitem que o senhor mova as configurações do pipeline e o código-fonte entre os espaços de trabalho. Consulte Converter um DLT pipeline em um projeto Databricks ativo Bundle.

Criar um conjunto de dados de amostra para desenvolvimento e teste

Databricks recomenda a criação de conjuntos de dados de desenvolvimento e teste para testar a lógica do pipeline com dados esperados e registros potencialmente malformados ou corrompidos. Há várias maneiras de criar conjuntos de dados que podem ser úteis para desenvolvimento e testes, incluindo as seguintes:

  • Selecione um subconjunto de dados de uma produção dataset.
  • Use dados anônimos ou gerados artificialmente para fontes contendo PII.
  • Crie dados de teste com resultados bem definidos com base na lógica de transformações downstream.
  • Preveja possíveis corrupções de dados, registros malformados e alterações de dados anteriores criando registros que quebrem as expectativas do esquema de dados.

Por exemplo, se o senhor tiver um Notebook que define um dataset usando o seguinte código:

SQL
CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
"/production/data",
format => "json")

O senhor poderia criar um exemplo em dataset contendo registros específicos usando uma consulta como a seguinte:

SQL
CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading

O exemplo a seguir demonstra a filtragem de dados publicados para criar um subconjunto dos dados de produção para desenvolvimento ou teste:

SQL
CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY

Para usar esses diferentes conjuntos de dados, crie vários pipelines com o Notebook implementando a lógica das transformações. Cada pipeline pode ler dados do input_data dataset, mas está configurado para incluir o Notebook que cria o dataset específico para o ambiente.

Como o conjunto de dados DLT processa os dados?

A tabela a seguir descreve como a visualização materializada, as tabelas de transmissão e os dados do processo de visualização:

Tipo de dataset

Como os registros são processados por meio de consultas definidas?

Tabela de transmissão

Cada registro é processado exatamente uma vez. Isso pressupõe uma origem somente de acréscimo.

Visualização materializada

Os registros são processados conforme necessário para retornar resultados precisos para o estado atual dos dados. A visualização materializada deve ser usada para tarefas de processamento de dados, como transformações, agregações ou pré-computação de consultas lentas e cálculos usados com frequência.

View

Os registros são processados sempre que a exibição é consultada. Use modos de exibição para transformações intermediárias e verificações de qualidade de dados que não devem ser publicadas em conjuntos de dados públicos.

Declare seu primeiro conjunto de dados em DLT

A DLT apresenta uma nova sintaxe para Python e SQL. Para conhecer os conceitos básicos da sintaxe do pipeline, consulte Desenvolver código de pipeline com Python e Desenvolver código de pipeline com SQL.

nota

DLT separa as definições do dataset do processamento de atualizações, e o DLT Notebook não se destina à execução interativa.

Como o senhor configura o pipeline DLT?

As configurações do pipeline DLT se enquadram em duas categorias amplas:

  1. Configurações que definem uma coleção de Notebook ou arquivos (conhecidos como código-fonte ) que usam a sintaxe DLT para declarar o conjunto de dados.
  2. Configurações que controlam a infraestrutura do pipeline, o gerenciamento de dependências, como as atualizações são processadas e como as tabelas são salvas no workspace.

A maioria das configurações é opcional, mas algumas exigem atenção cuidadosa, especialmente ao configurar pipelines de produção. Isso inclui o seguinte:

  • Para disponibilizar dados fora do pipeline, você deve declarar um esquema de destino para publicar no Hive metastore ou um catálogo de destino e um esquema de destino para publicar no Unity Catalog.
  • As permissões de acesso aos dados são configuradas por meio do clustering usado para a execução. Certifique-se de que seu clustering tenha as permissões apropriadas configuradas para a fonte de dados e o local de armazenamento de destino, se especificado.

Para obter detalhes sobre o uso dos sites Python e SQL para escrever o código-fonte do pipeline, consulte DLT SQL language reference e DLT Python language reference.

Para obter mais informações sobre definições e configurações de pipeline, consulte Configurar um pipeline DLT.

Implante seu primeiro pipeline e acione atualizações

Antes de processar dados com a DLT, o senhor deve configurar um pipeline. Depois que um pipeline for configurado, o senhor pode acionar uma atualização para calcular os resultados de cada dataset em seu pipeline. Para começar a usar o pipeline DLT, consulte o tutorial: execute seu primeiro DLT pipeline .

O que é uma atualização de pipeline?

Os pipelines implementam a infraestrutura e recalculam o estado dos dados quando você inicia uma atualização . Uma atualização executa as seguintes ações:

  • Inicia um cluster com a configuração correta.
  • Descobre todas as tabelas e visualizações definidas e verifica se há erros de análise, como nomes de colunas inválidos, dependências ausentes e erros de sintaxe.
  • Cria ou atualiza tabelas e visualizações com os dados mais recentes disponíveis.

O pipeline pode ser executado continuamente ou em uma programação, dependendo dos requisitos de custo e latência do seu caso de uso. Veja a execução de uma atualização em DLT pipeline .

Ingerir dados com DLT

DLT suporta todas as fontes de dados disponíveis em Databricks.

Databricks recomenda o uso de tabelas de transmissão para a maioria dos casos de uso de ingestão. Para arquivos que chegam ao armazenamento de objetos na nuvem, a Databricks recomenda o Auto Loader. O senhor pode ingerir dados diretamente com a DLT a partir da maioria dos barramentos de mensagens.

Para obter mais informações sobre como configurar o acesso ao armazenamento em nuvem, consulte Configuração do armazenamento em nuvem.

Para formatos não suportados pelo Auto Loader, o senhor pode usar Python ou SQL para consultar qualquer formato suportado pelo Apache Spark. Consulte Carregar dados com DLT.

Monitore e reforce a qualidade dos dados

O senhor pode usar expectativas para especificar controles de qualidade de dados sobre o conteúdo de um dataset. Diferentemente da restrição CHECK em um banco de dados tradicional, que impede a adição de registros que não cumpram a restrição, as expectativas oferecem flexibilidade ao processar dados que não cumprem os requisitos de qualidade de dados. Essa flexibilidade permite processar e armazenar dados que você espera que sejam confusos e dados que devem atender a requisitos rigorosos de qualidade. Veja como gerenciar a qualidade dos dados com pipeline expectativas.

Qual é a relação entre a DLT e o Delta Lake?

A DLT amplia a funcionalidade do Delta Lake. Como as tabelas criadas e gerenciadas por DLT são tabelas Delta, elas têm as mesmas garantias e recursos fornecidos por Delta Lake. Consulte O que é o Delta Lake?

O DLT adiciona várias propriedades de tabela, além das muitas propriedades de tabela que podem ser definidas no Delta Lake. Consulte a referência de propriedades DLT e a referência de propriedades da tabela Delta.

Como as tabelas são criadas e gerenciadas pelo DLT

Databricks gerenciar automaticamente tabelas criadas com DLT, determinar como as atualizações precisam ser processadas para compute corretamente o estado atual de uma tabela e executar várias tarefas de manutenção e otimização.

Para a maioria das operações, o senhor deve permitir que a DLT processe todas as atualizações, inserções e exclusões em uma tabela de destino. Para obter detalhes e limitações, consulte Manter exclusões ou atualizações manuais.

Tarefa de manutenção realizada pelo DLT

DLT realiza a tarefa de manutenção dentro de 24 horas após a atualização de uma tabela. A manutenção pode melhorar o desempenho da consulta e reduzir o custo, removendo versões antigas das tabelas. Em default, o sistema executa uma OPTIMIZE operações seguidas de vacuum. O senhor pode desativar o OPTIMIZE para uma tabela definindo pipelines.autoOptimize.managed = false nas propriedades da tabela. As tarefas de manutenção são realizadas somente se uma atualização do site pipeline tiver sido executada nas 24 horas anteriores à programação da tarefa de manutenção.

Delta Live Tables agora é DLT

O produto anteriormente conhecido como Delta Live Tables agora é DLT.

Limitações

Para obter uma lista de limitações, consulte Limitações da DLT.

Para obter uma lista dos requisitos e limitações específicos do uso do DLT com o Unity Catalog, consulte Use Unity Catalog with your DLT pipeline

Recurso adicional