Pular para o conteúdo principal

Organize datasets across Lakeflow pipelines

Use Lakeflow pipelines to process anywhere from one to hundreds of datasets in a single pipeline. Decide which datasets belong together based on domain, cadence, and dependencies, and split work into separate pipelines when ownership, latency, or scale differ.

Overview

Uma decisão que nunca surge em um tutorial torna-se importante em implantações reais: quais tabelas pertencem ao mesmo pipeline e quando algo deve ser seu próprio pipeline? Errar nisso é uma das maneiras mais comuns de as equipes se colocarem em uma situação difícil. O modo de falha clássico é despejar tudo em um pipeline gigante e, posteriormente, enfrentar problemas de escalonamento, concorrência e raio de explosão que são difíceis de reverter.

Não existe uma única resposta correta, mas há forças claras atuando em cada direção e uma restrição importante que vale a pena conhecer antes de projetar.

Diretrizes

Agrupe datasets por domínio, cadência compartilhada e dependência, e divida-os nos limites de propriedade, camada e latência. Mantenha a contagem de datasets atualizáveis de forma independente de qualquer pipeline individual confortavelmente abaixo do limite de atualização paralela.

Know the concurrency limit before you design

Uma única atualização de pipeline com trigger executa no máximo 16 atualizações de dataset em paralelo . Esta é a surpresa mais comum para equipes que colocam tudo em um pipeline: quando você tem mais de aproximadamente 16 datasets que poderiam ser executados simultaneamente, os extras ficam na fila atrás dos primeiros 16 em vez de serem executados em paralelo, portanto, o tempo total de atualização aumenta, mesmo havendo compute disponível. Se você tem dezenas de datasets independentes e se preocupa com o tempo de atualização do relógio de parede, isso por si só é um motivo para não amontoá-los todos em um único pipeline.

What belongs in the same pipeline

Mantenha os conjuntos de dados juntos quando eles compartilharem estrutura ou agendamento:

  • Datasets that form one dependency chain or one logical domain, such as the bronze, silver, and gold tables for orders. Keeping a connected directed acyclic graph (DAG) together lets the pipeline schedule it, checkpoint it, and full-refresh it as a coherent unit, and keeps lineage readable. See Load and process data incrementally with Lakeflow pipeline flows.
  • Conjuntos de dados que compartilham o mesmo requisito de atualização e cadência de execução, como itens que devem ser atualizados juntos, pelo mesmo Trigger, no mesmo limite de transação.
  • Datasets pequenos o suficiente no agregado para que todo o gráfico caiba confortavelmente abaixo do limite de atualização paralela e seja refresh em um tempo aceitável.

O que pertence a um pipeline separado

Split datasets apart when they differ in ownership, layer, or latency:

  • Domínios ou equipes diferentes. Propriedade separada geralmente deve significar pipelines separados, para que a alteração ou falha de uma equipe não bloqueie a de outra.
  • Camadas que você deseja escalar ou programar independentemente. Uma divisão amplamente recomendada é separar a ingestão (bronze) da transformação (prata e ouro) em pipelines distintos, para que uma ingestão lenta ou com falha não atrase a transformação e cada uma possa dimensionar o compute de acordo com suas próprias necessidades.
  • Diferentes perfis de latência. Uma transmissão contínua de baixa latência não deve compartilhar o mesmo pipeline com um agregador de lotes que processa dados uma vez por dia. Consulte Modo de Trigger vs. modo de pipeline contínuo.
  • Datasets that push you past the parallel-update limit and would otherwise queue.

To run a set of datasets in isolation, consider a standalone pipeline. See Standalone pipelines vs. Lakeflow pipelines.

Uma regra geral prática

Não use um pipeline monolítico como default, e também não fragmente cada tabela em seu próprio pipeline. Agrupe por domínio + cadência compartilhada + dependência , divida em limites de propriedade, camada e latência , e mantenha a contagem de datasets atualizáveis independentemente de qualquer pipeline individual confortavelmente abaixo do limite de atualização paralela. Em caso de dúvida, prefira um punhado de pipelines médios alinhados aos domínios em vez de um pipeline gigante. É muito mais fácil fazer merge de dois pipelines pequenos posteriormente do que dividir um monólito que já está em produção.

Limitações

  • A single triggered update runs at most 16 dataset updates in parallel. Datasets beyond that ceiling queue rather than running concurrently, so a pipeline with dozens of independent datasets can take longer to update even when compute is available.
  • A divisão em vários pipelines custa um pouco da visibilidade de ponta a ponta. Ao dividir, conte com as tabelas do sistema (system.lakeflow.pipelines, system.lakeflow.job_run_timeline) e orquestre as peças juntas com um Lakeflow Job para que você ainda obtenha uma única visão de ponta a ponta de todo o fluxo. Consulte Executar pipelines em um fluxo de trabalho.

Outros recursos