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.
Este artigo descreve as principais diferenças entre lote e streaming, duas semânticas de processamento de dados diferentes usadas para cargas de trabalho de engenharia de dados, incluindo ingestão, transformação e processamento em tempo real.
O streaming é comumente associado a baixa latência e processamento contínuo de barramentos de mensagens, como o Apache Kafka.
No entanto, no Azure Databricks ele tem uma definição mais expansiva. O mecanismo subjacente do Lakeflow Declarative Pipelines (Apache Spark e Structured Streaming) tem uma arquitetura unificada para processamento em lote e streaming:
- O mecanismo pode tratar fontes como armazenamento de objetos em nuvem e Delta Lake como fontes de streaming para processamento incremental eficiente.
- O processamento de streaming pode ser executado de forma acionada e contínua, dando-lhe a flexibilidade de controlar as compensações de custo e desempenho para suas cargas de trabalho de streaming.
Abaixo estão as diferenças semânticas fundamentais que distinguem lote e streaming, incluindo suas vantagens e desvantagens, e considerações para escolhê-los para suas cargas de trabalho.
Semântica em lote
Com o processamento em lote, 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, uma fonte de dados em lote normalmente é particionada logicamente, por exemplo, por dia ou região, para limitar o reprocessamento de dados.
Por exemplo, o cálculo do preço médio de venda do item, agregado em uma granularidade horária, para um evento de vendas executado por uma empresa de comércio eletrônico pode ser agendado como processamento em lote para calcular o preço médio de venda a cada hora. No processamento em lotes, os dados das horas anteriores são reprocessados a cada hora, e os resultados calculados anteriormente são sobrescritos para refletir os últimos resultados.
Semântica de streaming
Com o processamento de streaming, o mecanismo controla quais dados estão sendo processados e só processa novos dados em execuções subsequentes. No exemplo acima, você pode agendar o processamento de streaming em vez do processamento em lote para calcular o preço médio de venda a cada hora. Com o streaming, apenas 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 em lote vs. streaming
No exemplo acima, o streaming é melhor do que o processamento em lote porque não processa os mesmos dados processados em execuções anteriores. No entanto, o processamento de streaming fica mais complexo com cenários como dados fora de ordem e chegada tardia na fonte.
Um exemplo de dados de chegada tardia é se alguns dados de vendas da primeira hora não chegarem à fonte até a segunda hora:
- No processamento em lote, os dados de chegada tardia da primeira hora serão processados com dados da segunda hora e dados existentes da primeira hora. Os resultados anteriores da primeira hora serão substituídos e ajustados de acordo com os dados de chegadas posteriores.
- No processamento de streaming, os dados que chegam atrasados da primeira hora serão processados separadamente dos outros dados da primeira hora que já foram processados. A lógica de processamento deve armazenar as informações de soma e contagem dos cálculos de média da primeira hora para atualizar corretamente os resultados anteriores.
Essas complexidades de streaming geralmente são introduzidas quando o processamento é stateful, como junções, agregações e desduplicações.
Para o processamento de streaming sem estado, como anexar novos dados da fonte, o tratamento de dados fora de ordem e de chegada tardia é menos complexo, pois os dados que chegam atrasados podem ser anexados aos resultados anteriores à medida que os dados chegam da fonte.
A tabela abaixo descreve os prós e contras do processamento em lote e streaming e os diferentes recursos do produto que suportam essas duas semânticas de processamento no Databricks Lakeflow.
Lote | Transmissão | |
---|---|---|
Vantagens |
|
|
Desvantagens |
|
|
Produtos de engenharia de dados |
|
|
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 medalhão.
Camada de medalhão | Características da carga de trabalho | Recomendação |
---|---|---|
Bronze |
|
|
Prata |
|
|
Ouro |
|
|