Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os pipelines do Lakeflow fornecem um framework declarativo para criar pipelines de dados em lote e em fluxo em SQL e Python. Os seus conceitos centrais são pipelines, fluxos, tabelas de fluxo, vistas materializadas e sinks, que trabalham em conjunto para processar dados com orquestração automática e atualizações incrementais.
Os oleodutos Lakeflow estendem os Apache™ Spark Declarative Pipelines (SDP). Para saber mais sobre SDP e como se compara com os pipelines Lakeflow, consulte Apache Spark Declarative Pipelines.
Tip
Sou novo no mundo dos oleodutos? Comece por Como utilizar os pipelines do Lakeflow para compreender como utilizar os pipelines ao longo do seu ciclo de vida, e porquê, com ligações para as tarefas correspondentes a cada etapa.
Note
Os oleodutos Lakeflow requerem o plano Premium. Entre em contato com sua equipe de conta Databricks para obter mais informações.
Quais são os benefícios dos oleodutos?
Em contraste com o desenvolvimento de processos de engenharia de dados com as APIs Apache Spark e Spark Structured Streaming no Databricks Runtime, usando orquestração manual via Lakeflow Jobs, a natureza declarativa dos pipelines oferece os seguintes benefícios:
- Orquestração automática: Os pipelines executam etapas de processamento (designadas por "fluxos") na ordem correta, com o máximo de paralelismo, e repetem progressivamente em caso de falhas transitórias — desde a tarefa do Spark, passando pelo fluxo, até ao pipeline completo.
- Processamento declarativo: As funções declarativas reduzem centenas de linhas de código manual Spark e Structured Streaming a poucas. A API AUTO CDC gere eventos de Captura de Dados de Alteração (CDC) — incluindo SCD Tipo 1 e Tipo 2 — sem código manual para eventos fora de ordem ou conceitos de streaming como marcas de água.
- Processamento incremental: Um motor de processamento incremental mantém as visualizações materializadas atualizadas: escreve-se lógica de transformação com semântica batch, e o motor só reprocessa dados de origem novos ou alterados quando possível.
Conceitos principais
O diagrama abaixo ilustra os conceitos mais importantes de oleodutos.
Conjuntos de Dados
Um pipeline produz três tipos de conjuntos de dados, cada um com semântica de processamento diferente:
| Tipo de conjunto de dados | Como os registos são processados |
|---|---|
| Tabela de transmissão | Cada registo é processado exatamente uma vez, assumindo uma fonte apenas para acrescentar. As tabelas de streaming são adequadas para a ingestão e processamento incremental de dados em crescimento contínuo. |
| Visão materializada | Os resultados são recalculados conforme necessário para refletir o estado atual dos dados. As vistas materializadas são adequadas para transformações, agregações ou resultados de pré-computação consumidos por múltiplos conjuntos de dados a jusante. |
| View | Avaliado quando solicitado, não persistido. Use vistas para transformações intermédias e verificações que não precisam de ser publicadas num catálogo. |
Uma tabela de streaming é uma forma de tabela gerida pelo Unity Catalog que também é um alvo de streaming. Uma tabela de streaming pode ter um ou mais fluxos de streaming (Append, AUTO CDC) gravados nela. Pode definir fluxos de streaming de forma explícita e separada da sua tabela de streaming de destino, ou implicitamente como parte de uma definição de tabela de streaming.
Uma exibição materializada também é uma forma de tabela gerenciada pelo Unity Catalog e é um destino em lote. Uma visão materializada pode ter um ou mais fluxos de visão materializados escritos nela. As visualizações materializadas diferem das tabelas de streaming na medida em que você sempre define os fluxos implicitamente como parte da definição de exibição materializada.
Para mais detalhes, consulte Tabelas de streaming e Vistas materializadas.
Quando usar vistas, vistas materializadas e tabelas de fluxo
Ao implementar consultas de pipeline, escolha o tipo de conjunto de dados que melhor se adequa ao seu caso de uso.
Considere usar uma perspetiva para:
- Divida uma consulta grande ou complexa em consultas mais fáceis de gerir.
- Valide resultados intermediários usando expectativas.
- Reduza os custos de armazenamento e computação para resultados que não precisa manter. Como as tabelas são materializadas, elas exigem recursos adicionais de computação e armazenamento.
Considere o uso de uma visão materializada quando:
- Várias consultas downstream consomem a tabela. Como uma visualização materializada armazena em cache os seus resultados, as consultas a jusante leem os resultados pré-computados em vez de recalcularem a consulta em cada acesso.
- Outros sistemas de processamento, trabalhos ou consultas consomem a tabela. Como uma vista materializada é materializada numa tabela do Unity Catalog, os utilizadores fora do pipeline que a define podem consultá-la. As visualizações não se concretizam, por isso só podes usá-las dentro do mesmo pipeline.
- Deves inspecionar os resultados de uma consulta durante o desenvolvimento. Uma vez que uma vista materializada é materializada e pode ser consultada fora do pipeline, é possível validar a correção das computações durante o desenvolvimento. Após a validação, converta consultas que não exigem materialização em visualizações.
- A sua consulta realiza agregações ou junções, ou os dados de origem podem mudar devido a atualizações e eliminações, em vez de apenas crescerem. Uma visualização materializada mantém os seus resultados consistentes com o estado atual dos dados de origem, enquanto uma tabela de streaming é concebida para fontes apenas adicionáveis e processa cada registo uma única vez.
Considere o uso de uma tabela de streaming quando:
- Uma consulta é definida em relação a uma fonte de dados que está crescendo contínua ou incrementalmente.
- Os resultados da consulta devem ser calculados incrementalmente.
- O pipeline precisa de alta taxa de transferência e baixa latência.
Note
As tabelas de streaming são sempre definidas a partir das fontes de streaming. Você também pode usar fontes de streaming com AUTO CDC ... INTO para aplicar atualizações de feeds do CDC. Consulte As APIs do AUTO CDC: Simplifique a captura de dados de alteração com pipelines.
Flows
Um fluxo é o conceito fundamental de processamento de dados em pipelines, e suporta tanto a semântica de streaming como a de batch. Um fluxo lê dados de uma fonte, aplica a lógica de processamento definida pelo usuário e grava o resultado em um destino. Os pipelines partilham o mesmo tipo de fluxo de streaming (Anexar, Atualizar, Completar) que o Spark Structured Streaming. (Atualmente, apenas os fluxos Append e Update estão expostos.) Para mais detalhes, veja modos de saída em Streaming Estruturado.
Os oleodutos também fornecem tipos adicionais de fluxo:
- AUTO CDC é um fluxo de transmissão único nos pipelines do Lakeflow que gere eventos CDC fora de sequência e suporta SCD Type 1 e SCD Type 2. O Auto CDC não está disponível no SDP.
- Vista materializada é um fluxo em lote num pipeline que só processa os novos dados e as alterações nas tabelas de origem sempre que possível.
Para obter mais detalhes, consulte Carregar e processar dados de forma incremental com fluxos do pipeline Lakeflow.
Sinks
Um sink é um alvo de streaming para um pipeline e suporta tabelas Delta, tópicos Apache Kafka, tópicos Azure EventHubs e fontes de dados personalizadas em Python. Um sumidouro pode ter um ou mais fluxos em fluxo (Anexar, Atualizar) escritos nele.
Para mais detalhes, veja Sumidouros em oleodutos de fluxo de lagos.
Tubulações
Um pipeline é a unidade de desenvolvimento e execução e constitui o contentor dos fluxos, das tabelas de streaming, das vistas materializadas e dos sinks que define. Constróis um pipeline definindo esses objetos no código-fonte do pipeline e depois executando o pipeline. Enquanto o seu pipeline corre, ele analisa as dependências dos seus objetos definidos e orquestra automaticamente a sua ordem de execução e paralelização.
Para mais detalhes, veja O que são oleodutos?.
Também pode definir vistas materializadas autónomas e tabelas de streaming fora de um pipeline Lakeflow, caso em que o Azure Databricks gere o pipeline por si. Para comparar as duas abordagens, veja Oleodutos independentes vs. Oleodutos Lakeflow.
Um pipeline é executado em modo acionado ou contínuo, o que determina se atualiza os dados disponíveis e se para ou mantém as tabelas atualizadas à medida que chegam novos dados. Para comparar os dois modos, veja Modo de pipeline desencadeado vs. contínuo.
Ingestão de dados
Os pipelines dão suporte a todas as fontes de dados disponíveis no Azure Databricks. O Databricks recomenda o uso de tabelas de streaming para a maioria dos casos de uso no processo de ingestão. Para ficheiros em armazenamento de objetos na cloud, o Auto Loader fornece carregamento incremental e idempotente. Para dados em streaming, os pipelines podem ingerir dados diretamente de barramentos de mensagens como Apache Kafka, Hubs de Eventos do Azure, Amazon Kinesis e Google Pub/Sub. Consulte Carregar dados em pipelines.
Qualidade de dados
As expectativas são cláusulas opcionais em conjuntos de dados que validam os dados à medida que fluem pelo pipeline. Defines uma expectativa como uma restrição booleana SQL e especificas o que acontece quando um registo falha: avisar, eliminar o registo ou falhar a atualização. Consulte Gerir a qualidade dos dados com as expectativas do fluxo de dados.
Integração Delta
Todas as tabelas criadas e geridas por pipelines são tabelas Delta. Têm as mesmas garantias da Delta Lake, incluindo transações ACID, viagem no tempo e validação de esquemas. Os pipelines adicionam propriedades adicionais da tabela e realizam manutenção automática usando otimização preditiva, incluindo operações OPTIMIZE e VACUUM. Veja O que é Delta Lake em Azure Databricks?.