Pular para o conteúdo principal

Desenvolver LakeFlow Pipeline declarativo

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 & DevOps ao pipeline declarativo LakeFlow.

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 LakeFlow Declarative pipeline.

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

LakeFlow O código do pipeline declarativo pode ser Python ou SQL. O senhor pode ter uma mistura de arquivos de código-fonte Python e SQL fazendo backup de um único pipeline, mas cada arquivo só pode conter uma linguagem. Consulte Desenvolver o código do pipeline com Python e Desenvolver o código do 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 dependencies para LakeFlow Declarative pipeline.

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 LakeFlow Recurso de desenvolvimento de pipeline declarativo

LakeFlow O pipeline declarativo amplia e aproveita muitos Databricks recursos, além de introduzir 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

O notebook configurado como código-fonte para o pipeline LakeFlow Declarative oferece opções interativas para validar o código e executar atualizações. Consulte Desenvolver e depurar o pipeline ETL com um Notebook em LakeFlow Declarative pipeline.

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 LakeFlow Declarative pipeline.

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 o pipeline LakeFlow Declarative 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 do pipeline declarativo LakeFlow 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 LakeFlow Declarative pipeline

LakeFlow O pipeline declarativo 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

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

Como o senhor configura o pipeline declarativo LakeFlow?

As configurações do pipeline LakeFlow Declarative se dividem em duas grandes categorias:

  1. Configurações que definem uma coleção de Notebook ou arquivos (conhecidos como código-fonte ) que usam a sintaxe do pipeline declarativo LakeFlow 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 LakeFlow Declarative pipeline SQL language reference e LakeFlow Declarative pipeline Python language reference.

Para obter mais informações sobre as definições e configurações do site pipeline, consulte Configurar o pipeline declarativo LakeFlow.

Implante seu primeiro pipeline e acione atualizações

Antes de processar dados com o pipeline declarativo LakeFlow, o senhor deve configurar um pipeline declarativo 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 LakeFlow Declarative pipeline, consulte o tutorial: Crie um ETL pipeline usando a captura de dados de alterações (CDC) com LakeFlow Declarative 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 LakeFlow Declarative pipeline.

Ingerir dados com o pipeline declarativo LakeFlow

LakeFlow O pipeline declarativo é compatível com 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 o pipeline declarativo LakeFlow 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 LakeFlow Declarative pipeline.

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 o LakeFlow Declarative pipeline e o Delta Lake?

LakeFlow O pipeline declarativo amplia a funcionalidade do site Delta Lake. Como as tabelas criadas e gerenciadas pelo pipeline LakeFlow Declarative são tabelas Delta, elas têm as mesmas garantias e recursos fornecidos pelo Delta Lake. Consulte O que é Delta Lake na Databricks?

LakeFlow O pipeline declarativo adiciona várias propriedades de tabela, além das muitas propriedades de tabela que podem ser definidas em Delta Lake. Consulte LakeFlow Referência de propriedades de pipeline declarativo e Delta referência de propriedades de tabela.

Como as tabelas são criadas e gerenciadas pelo pipeline declarativo LakeFlow

Databricks gerenciar automaticamente as tabelas criadas com o pipeline LakeFlow Declarative, determinando 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.

Na maioria das operações, o senhor deve permitir que o pipeline do LakeFlow Declarative 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 LakeFlow Declarative pipeline

LakeFlow O pipeline declarativo executa a tarefa de manutenção em uma cadência ideal usando otimização preditiva. A manutenção pode melhorar o desempenho da consulta e reduzir os custos, removendo versões antigas das tabelas. Isso inclui o OPTIMIZE e vacuum operações. As tarefas de manutenção são realizadas em uma programação decidida pela otimização preditiva e somente se uma atualização do site pipeline tiver sido executada desde a manutenção anterior.

Para saber com que frequência a otimização preditiva é executada e para entender os custos de manutenção, consulte Referência de tabela do sistema de otimização preditiva.

Limitações

Para obter uma lista de limitações, consulte LakeFlow Limitações do pipeline declarativo.

Para obter uma lista de requisitos e limitações específicos do uso do pipeline declarativo LakeFlow com Unity Catalog, consulte Use Unity Catalog com o pipeline declarativo LakeFlow

Recurso adicional