Escolar Documentos
Profissional Documentos
Cultura Documentos
Frameworks Stream
Frameworks Stream
DE BIG DATA
Introdução
Existem cenários com características específicas de streaming de big
data, como no caso de uma instituição financeira que rastreia em tempo
real as mudanças de mercado para ajustar as operações das carteiras
de investimento com base em limites máximos e mínimos, ou no caso
de soluções de Internet das Coisas que crescem a cada dia e sensores
de monitoramento que fazem o envio constante das suas leituras para
uma ou mais estações. Para lidar com esses cenários, é necessário utilizar
tecnologias que possam tratar séries temporais e realizar o processamento
à medida que os dados chegam, ao invés de esperar o final da mensagem
para realizar o processamento, pois, nesses casos, as mensagens não
contêm um sinal de fim de arquivo por serem um fluxo constante de
dados, que em teoria não tem fim.
Neste capítulo, você vai conhecer uma visão geral de frameworks
de stream de big data, saber mais sobre o Spark Streaming, por meio da
descrição de suas características e da comparação com outras tecnologias
utilizadas para stream de big data, bem como pela ingestão de um stream
de dados simples.
2 Overview de frameworks de stream de big data
Figura 4. DStream de entrada com o objeto do tipo Receiver para receber os dados.
Fonte: Adaptada de Dayananda (2019).
fluxos contínuos de dados em tempo real. Para lidar com esses fluxos de dados,
o Spark disponibiliza duas ferramentas, uma é o Spark Streaming, apresentado
anteriormente neste capítulo, e a outra é o Structured Streaming.
De acordo com Saxena (2019), o Spark Structured Streaming surgiu com
a versão 2 do Spark como mais uma forma de lidar com fluxos contínuos de
dados e foi construído na biblioteca Spark SQL. Baseado nas APIs Dataframe
e Dataset, ele torna fácil a execução de consultas SQL com a API Dataframe
e operações com a API Dataset nos fluxos de dados.
Uma das diferenças entre eles é a forma como tratam os fluxos de dados
em tempo real. Enquanto o Spark Streaming utiliza o conceito de divisão em
microlotes e cada lote pertence a um lote do DStream, representado por dife-
rentes RDDs, o Structured Streaming processa cada linha do fluxo de dados
e o resultado é a atualização de uma tabela de resultados. Além disso, com
o Structured Streaming é possível que a tabela resultante seja composta por
uma atualização dos dados, apenas novos resultados ou todos os resultados,
dependendo do modo das operações utilizadas.
A segunda diferença tem relação com as diferentes APIs de cada um dos
modelos. Enquanto o Spark Streaming utiliza a API DStream, que internamente
funciona com RDDS, o Structured Streaming utiliza APIs Dataframe e Dataset.
Dessa forma, conforme apresentado por diversos autores, os Dataframes são
mais otimizados quando se trata de processamento, além de oferecerem mais
opções de agregação e outras operações com funções suportadas no Spark.
Outra diferença diz respeito à forma de processamento de dados com base
no horário exato do acontecimento do evento. No Spark Streaming, o controle
do tempo só tem relação com o momento em que o dado é ingerido pelo Spark,
quando os dados são colocados em um lote atual, mesmo que o evento tenha
acontecido mais cedo e pertença ao lote anterior, o que pode ser considerado
como perda de dados e gerar informações menos precisas.
Todavia, no caso do Structured Streaming, um dos principais recursos
introduzidos é o tratamento de dados atrasados com base no horário do acon-
tecimento do evento, de forma que o registro de data e hora do acontecimento
do evento no mundo real é inserido na tabela de resultados, fornecendo uma
maneira diferente de processar os dados, se comparado ao Spark Streaming.
Em se tratando de tolerância a falhas, em ambos os frameworks é utilizado
o conceito de ponto de controle para guardar o progresso de um trabalho,
pois para que uma aplicação seja tolerante a falhas ela precisa ter capacidade
de reiniciar a partir do ponto de falha, de forma a evitar perda de dados, no
caso de retomar em um ponto posterior, ou a duplicação de dados, no caso de
retomar em um ponto anterior.
Overview de frameworks de stream de big data 7
palavrasContadas.print();
Com o código escrito até agora, foi realizada a configuração do que deverá
ser executado pelo Spark Streaming sem que aconteça algum tipo de processa-
mento até que a operação de chamada de início aconteça explicitamente, por
meio da função start do objeto de contexto do Spark Streaming. Além disso,
deve-se esperar a execução terminar pela operação awaitTermination,
como pode ser visto no trecho de código que segue:
ssc.start();
ssc.awaitTermination();
Overview de frameworks de stream de big data 11
Exemplo
Com isso, é possível conhecer uma visão geral sobre o Apache Spark Streaming,
observar suas características e as diferenças entre ele e outros frameworks,
como o Apache Structured Streaming, o Apache Flink e o Apache Storm, bem
como entender como seria a programação em Java de uma aplicação simples
de ingestão de dados em streaming.
14 Overview de frameworks de stream de big data
APACHE SPARK. Spark streaming programming guide. Apache Spark, [s. l.], [201–?].
Disponível em: https://spark.apache.org/docs/latest/streaming-programming-guide.
html. Acesso em: 30 mar. 2020.
DAYANANDA, S. Spark streaming tutorial: sentiment analysis using apache spark. Edu-
reka!, [s. l.], 22 May 2019. Disponível em: https://www.edureka.co/blog/spark-streaming/.
Acesso em: 30 mar. 2020.
GORASIYA, D. Comparison of open-source data stream processing engines: Spark
streaming, Flink and Storm. Technical Report, [s. l.], 2019. Disponível em: https://www.
researchgate.net/publication/336141201_Comparison_of_Open-Source_Data_Stream_
Processing_Engines_Spark_Streaming_Flink_and_Storm. Acesso em: 30 mar. 2020.
PENCHIKALA, S. Big Data com Apache Spark Part 3: Spark streaming. Info Q, [s. l.], 5 dez.
2016. Disponível em: https://www.infoq.com/br/articles/apache-spark-streaming/.
Acesso em: 30 mar. 2020.
PRAKASH, C. Spark streaming vs Flink vs Storm vs Kafka Streams vs Samza: Choose
your stream processing framework. Medium, [s. l.], 1 May 2018. Disponível em: https://
medium.com/@chandanbaranwal/spark-streaming-vs-flink-vs-storm-vs-kafka-streams-
-vs-samza-choose-your-stream-processing-91ea3f04675b. Acesso em: 30 mar. 2020.
SAXENA, A. Spark streaming vs. structured streaming. DZone, [s. l.], 29 mar. 2019. Dis-
ponível em: https://dzone.com/articles/spark-streaming-vs-structured-streaming.
Acesso em: 30 mar. 2020.
Os links para sites da web fornecidos neste livro foram todos testados, e seu funciona-
mento foi comprovado no momento da publicação do material. No entanto, a rede
é extremamente dinâmica; suas páginas estão constantemente mudando de local
e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade sobre
qualidade, precisão ou integralidade das informações referidas em tais links.