O que é Spark Streaming? Processando dados em tempo real com Apache Spark

O volume de informações geradas por diversas fontes cresce exponencialmente há décadas. Nesse cenário, organizações buscam cada vez mais transformar esses dados em valor para seus negócios.
Inicialmente, o principal desafio era encontrar soluções para armazenar grandes volumes de dados. Com o tempo, surgiu a necessidade de processá-los rapidamente. Atualmente, o maior desafio é extrair valor desses dados em tempo real.
Dessa forma, a capacidade de processar dados em tempo real tornou-se uma vantagem competitiva fundamental. Novas técnicas e ferramentas foram desenvolvidas com esse objetivo.
Neste artigo, entenda o que é Spark Streaming, como funciona e quando aplicar o framework para transformar dados em valor para o negócio.
Principais tipos de processamento de dados: batch vs streaming
No contexto de Big Data, o processamento de dados em batch (lote) tornou-se bastante conhecido desde o surgimento do Hadoop.
Devido aos seus recursos e robustez, o modelo de programação MapReduce do Hadoop tornou-se uma das principais estruturas de processamento de dados em batch.
Com o passar do tempo boa parte dos desafios neste campo foram bem solucionados e desde então a comunidade mudou sua atenção para outro desafio, o processamento de dados em streaming.
O termo streaming é amplamente associado a plataformas de áudio e vídeo, como Spotify, Amazon Music, YouTube e Netflix. Ele também aparece em aplicações como monitoramento de bolsas de valores ou coleta de dados de sensores (IoT).
Mas, afinal, o que é streaming de dados no contexto de análise e engenharia de dados? Qual a diferença entre processar dados em lote (batch) e em tempo real utilizando plataformas como o Apache Spark?
O processamento de dados em batch executa tarefas sobre um conjunto de dados de entrada estático e de tamanho definido, produzindo um resultado final. O processamento é interrompido ao final do conjunto de dados.
Já o processamento em streaming executa tarefas continuamente sobre fluxos de dados ilimitados. Ou seja, neste modelo, lidamos com dados que chegam de forma constante, sem previsão de término.
O que é Apache Spark e por que usar esse framework para Big Data
Devido ao alto volume de dados nas organizações, surgiram diversos frameworks para processar informações em larga escala e tempo real.
O Apache Spark é uma plataforma open source projetada para processamento distribuído de dados, conhecido por sua velocidade e flexibilidade, permitindo operações em lote (batch processing) e streaming de dados em tempo real.
O Apache Spark é um framework que suporta múltiplas linguagens de programação. Ele é utilizado em tarefas como engenharia de dados, ciência de dados e machine learning, podendo rodar tanto em um único computador quanto em um cluster. É uma ferramenta amplamente empregada em projetos de Big Data.
O Spark possui um conjunto de componentes focados em diferentes necessidades, todos baseados no Spark Core, responsável pelas funções básicas de processamento. Entre esses componentes está o Spark Streaming, que permite o processamento de fluxos de dados em tempo real.
Spark Streaming
O Spark Streaming é uma extensão da API principal do Spark que possibilita o processamento de dados em tempo real, com tolerância a falhas, alto desempenho e escalabilidade. A figura abaixo, extraída do site da Databricks, ilustra um exemplo de fluxo de processamento de dados usando o Spark Streaming.

O Spark Streaming suporta tanto cargas de trabalho em batch quanto streaming. Essa integração facilita o trabalho de quem desenvolve, já que permite utilizar uma única estrutura para diferentes necessidades de processamento.
Como mostra a figura, dados em tempo real podem ser recebidos de diversas fontes, como Kafka, Flume, Kinesis, Twitter, HDFS ou soquetes TCP. Dados estáticos podem vir de bancos como MongoDB, MySQL, PostgreSQL, entre outros.
A principal abstração do Spark Streaming é chamada de Discretized Stream, ou simplesmente DStream.
Ela consiste em uma sequência contínua de RDDs (a estrutura principal de dados do Spark) e representa o fluxo de dados, dividido em pequenos lotes. Isso facilita a integração do Spark Streaming com outros componentes, como Spark SQL e MLlib.
Após o processamento, os dados podem ser direcionados para sistemas de arquivos, bancos de dados ou dashboards.
Para profissionais que buscam compreender as diferenças entre Spark Streaming vs Structured Streaming, recomendamos explorar a documentação oficial e outros recursos citados abaixo.









