Desenvolver pipelines DLT
O desenvolvimento e teste do código de pipeline difere de outras cargas de trabalho do Apache Spark. Este artigo fornece uma visão geral da funcionalidade suportada, práticas recomendadas e considerações ao desenvolver código de pipeline. Para obter mais recomendações e práticas recomendadas, consulte Aplicando práticas recomendadas de desenvolvimento de software & DevOps a pipelines de DLT.
Observação
Você deve adicionar código-fonte a uma configuração de pipeline para validar o código ou executar uma atualização. Consulte Configurar um pipeline de DLT.
Quais arquivos são válidos para o código-fonte do pipeline?
O código de pipeline DLT pode ser Python ou SQL. Você pode ter uma mistura de arquivos de código-fonte Python e SQL apoiando 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.
Você pode usar blocos de anotações e arquivos de espaço de trabalho ao especificar o código-fonte para um pipeline. Os arquivos de espaço de trabalho representam scripts Python ou SQL criados em seu IDE preferido ou no editor de arquivos Databricks. Consulte O que são ficheiros de espaço de trabalho?.
Se você desenvolver código Python como módulos ou bibliotecas, deverá instalar e importar o código e, em seguida, chamar métodos de um bloco de anotações Python ou arquivo de espaço de trabalho configurado como código-fonte. Consulte Gerenciar dependências Python para pipelines DLT.
Observação
Se você precisar usar comandos SQL arbitrários em um bloco de anotações Python, poderá usar o padrão de sintaxe spark.sql("<QUERY>")
para executar SQL como código Python.
As funções do Unity Catalog permitem que você registre funções arbitrárias definidas pelo usuário do Python para uso em SQL. Consulte Funções definidas pelo usuário (UDFs) no Unity Catalog.
Visão geral dos recursos de desenvolvimento DLT
A DLT estende e aproveita muitos recursos do Azure Databricks e introduz novos recursos e conceitos. A tabela a seguir fornece uma breve visão geral dos conceitos e recursos que suportam o desenvolvimento de código de pipeline:
Funcionalidade | Descrição |
---|---|
Modo de desenvolvimento | Novos pipelines são configurados para serem executados no modo de desenvolvimento por padrão. O Databricks recomenda o uso do modo de desenvolvimento para desenvolvimento e testes interativos. Veja 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 Verifique se há erros num pipeline sem esperar que as tabelas sejam atualizadas. |
Computadores portáteis | Os blocos de anotações configurados como código-fonte para um pipeline DLT fornecem opções interativas para validar o código e executar atualizações. Consulte Desenvolver e depurar pipelines DLT em blocos de anotações. |
Parâmetros | Aproveite os parâmetros nas configurações de código-fonte e pipeline para simplificar os testes e a extensibilidade. Veja Usar parâmetros com pipelines DLT. |
Pacotes de ativos Databricks | Os pacotes de ativos Databricks permitem mover configurações de pipeline e código-fonte entre espaços de trabalho. Consulte Converter um pipeline do DLT num projeto Databricks Asset Bundle. |
Criar conjuntos de dados de exemplo para desenvolvimento e teste
O 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 teste, incluindo o seguinte:
- Selecione um subconjunto de dados de um conjunto de dados de produção.
- Use dados anonimizados ou gerados artificialmente para fontes que contenham PII.
- Crie dados de teste com resultados bem definidos com base na lógica de transformação downstream.
- Antecipe possíveis corrupção de dados, registros malformados e alterações de dados upstream criando registros que quebram as expectativas do esquema de dados.
Por exemplo, se você tiver um bloco de anotações que define um conjunto de dados usando o seguinte código:
CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
"/production/data",
format => "json")
Você pode criar um conjunto de dados de exemplo contendo registros específicos usando uma consulta como a seguinte:
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:
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 os blocos de anotações implementando a lógica de transformação. Cada pipeline pode ler dados do conjunto de dados input_data
, mas está configurado para incluir o bloco de anotações que cria o conjunto de dados específico para o ambiente.