Pular para o conteúdo principal

lotes vs. transmissão processamento de dados em Databricks

Este artigo descreve as key diferenças entre lotes e transmissão, duas semânticas de processamento de dados diferentes usadas para cargas de trabalho de engenharia de dados, incluindo ingestão, transformações e processamento de tempo real.

A transmissão é comumente associada ao processamento contínuo e de baixa latência de barramentos de mensagens, como o Apache Kafka.

No entanto, no Databricks, ele tem uma definição mais abrangente. O mecanismo subjacente do DLT (Apache Spark e transmissão estruturada) tem uma arquitetura unificada para processamento de lotes e transmissão:

  • O mecanismo pode tratar fontes como armazenamento de objetos na nuvem e Delta Lake como fontes de transmissão para um processamento incremental eficiente.
  • O processamento de transmissão pode ser executado tanto de forma acionada quanto contínua, oferecendo ao senhor a flexibilidade de controlar as compensações de custo e desempenho de suas cargas de trabalho de transmissão.

Abaixo estão as diferenças semânticas fundamentais que distinguem lotes e transmissão, incluindo suas vantagens e desvantagens, e considerações para escolhê-los para suas cargas de trabalho.

semântica de lotes

Com o processamento de lotes, o mecanismo não controla quais dados já estão sendo processados na fonte. Todos os dados atualmente disponíveis na fonte são processados no momento do processamento. Na prática, um lote fonte de dados é normalmente particionado logicamente, por exemplo, por dia ou região, para limitar o reprocessamento de dados.

Por exemplo, o cálculo do preço médio das vendas do item, agregado em uma granularidade horária, para um evento de vendas executado por uma empresa de comércio eletrônico pode ser programado como processamento de lotes para calcular o preço médio das vendas a cada hora. Com lotes, os dados de horas anteriores são reprocessados a cada hora e os resultados calculados anteriormente são substituídos para refletir os resultados mais recentes.

processamento de lotes

transmissão semântica

Com o processamento de transmissão, o mecanismo mantém o controle de quais dados estão sendo processados e só processa novos dados na execução subsequente. No exemplo acima, o senhor pode programar o processamento de transmissão em vez do processamento de lotes para calcular o preço médio das vendas a cada hora. Com a transmissão, somente os novos dados adicionados à fonte desde a última execução são processados. Os resultados recém-calculados devem ser anexados aos resultados calculados anteriormente para verificar os resultados completos.

processamento de transmissão

lotes vs. transmissão

No exemplo acima, a transmissão é melhor do que o processamento de lotes porque não processa os mesmos dados processados na execução anterior. No entanto, o processamento da transmissão fica mais complexo com cenários como dados fora de ordem e de chegada tardia na fonte.

Um exemplo de dados de chegada tardia é se alguns dados de ventas da primeira hora não chegarem à fonte até a segunda hora:

  • No processamento de lotes, os dados de chegada tardia da primeira hora serão processados com os dados da segunda hora e os dados existentes da primeira hora. Os resultados anteriores da primeira hora serão sobrescritos e corrigidos pelos dados de chegada tardia.
  • No processamento de transmissão, os dados de chegada tardia da primeira hora serão processados sem nenhum dos outros dados da primeira hora que foram processados. A lógica de processamento deve armazenar as informações de soma e contagem dos cálculos médios da primeira hora para atualizar corretamente os resultados anteriores.

Essas complexidades de transmissão são normalmente introduzidas quando o processamento é de estado, como junções, agregações e deduplicações.

Para o processamento de transmissão sem estado, como anexar novos dados da fonte, o tratamento de dados fora de ordem e de chegada tardia é menos complexo, pois os dados de chegada tardia podem ser anexados aos resultados anteriores à medida que os dados chegam à fonte.

A tabela abaixo descreve os prós e contras do processamento de lotes e transmissão e os diferentes produtos recurso que suportam essas duas semânticas de processamento em Databricks LakeFlow.

Batch

transmissão

Prós

  • A lógica de processamento é simples. - Os resultados são sempre precisos e refletem todos os dados disponíveis na fonte.
  • Eficiente, somente novos dados são processados. - Mais rápido, pode lidar com requisitos de latência de horas a minutos, segundos e milissegundos.

Contras

  • Não é tão eficiente; os dados serão reprocessados em uma partição de lotes específica. - Mais lento, pode lidar com requisitos de latência de horas para minutos, mas não segundos ou milissegundos.
  • A lógica de processamento pode ser complexa, especialmente para o processamento com estado, como junções, agregações, deduplicações etc. - Os resultados nem sempre podem ser precisos, considerando dados fora de ordem e de chegada tardia.

Data engenharia produto

Recomendações

A tabela abaixo descreve a semântica de processamento recomendada com base nas características das cargas de trabalho de processamento de dados em cada camada da arquitetura do medalhão.

Camada de medalhão

Características da carga de trabalho

Recomendação

Bronze

  • Cargas de trabalho de ingestão. - Normalmente, não envolve processamento ou envolve processamento sem estado para acréscimo incremental da fonte de dados. - O tamanho dos dados geralmente é maior.
  • o processamento de transmissão é geralmente uma escolha melhor, pois os usuários podem se beneficiar das vantagens da transmissão, mas não ficam expostos às complexidades do processamento de transmissão com estado.

Prata

  • transformações de cargas de trabalho. - Normalmente, envolve tanto o processamento sem estado, como filtragem, quanto o processamento com estado, como junção, agregações e deduplicações.
  • Use o processamento de lotes (com refreshincremental na visualização materializada) para evitar as complexidades do processamento de transmissão com estado. - Use o processamento de transmissão como uma opção para casos de uso em que a eficiência e a latência são muito mais importantes do que a precisão dos resultados. Tenha em mente as complexidades introduzidas pelo processamento de transmissão com estado.

ouro

  • Cargas de trabalho de agregação de última milha. - Normalmente, envolve processamento com estado, como junções e agregações. - O tamanho dos dados geralmente é menor.
  • Use o processamento de lotes (com refreshincremental na visualização materializada) para evitar as complexidades do processamento de transmissão com estado.