Sei sulla pagina 1di 118

Big Data Real-Time Analytics com

Python e Spark

www.datascienceacademy.com.br
Spark Streaming

www.datascienceacademy.com.br
A vida não acontece em batches

www.datascienceacademy.com.br
www.datascienceacademy.com.br
São muitas as vantagens na
manipulação de dados
como fluxos

www.datascienceacademy.com.br
Streaming de dados não é apenas para projetos altamente
especializados. Computação baseada em Streaming está se
tornando a regra para empresas orientadas a dados.

www.datascienceacademy.com.br
Novas tecnologias e projetos
de arquitetura permitem
construir sistemas flexíveis

www.datascienceacademy.com.br
Sensores = Dados Contínuos

www.datascienceacademy.com.br
www.datascienceacademy.com.br
O que vamos estudar neste capítulo?

• Arquitetura Spark Streaming


• DStreams
• Windowing
• Integração com outros sistemas – Kafka, Flume, Amazon Kinesis
• Processamento de Linguagem Natural – NLTK
• Análise de Sentimentos do Twitter em Tempo Real
• Deploy em Cluster na Nuvem

www.datascienceacademy.com.br
Bonus

Coletando Dados em Tempo Real do Twitter com Linguagem Scala

www.datascienceacademy.com.br
Spark Streaming

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Microbatching

www.datascienceacademy.com.br
Quer dizer que o Spark Streaming não é ”real” real-time?

www.datascienceacademy.com.br
Quer dizer que o Spark Streaming não é ”real” real-time?

www.datascienceacademy.com.br
www.datascienceacademy.com.br
As fontes de dados podem ser:

• Flat Files (à medida que são criados)


• TCP/IP
• Apache Flume
• Apache Kafka
• Amazon Kinesis
• Mídias Sociais (Facebook, Twitter, etc...)
• Bancos NoSQL
• Bancos Relacionais

www.datascienceacademy.com.br
www.datascienceacademy.com.br
• Streaming ETL
• Detecção de Anomalias
• Enriquecimento de Dados
• Sessões Complexas e Aprendizado Contínuo

www.datascienceacademy.com.br
E quando usamos Spark Streaming?

• Detecção de Fraudes em Tempo Real


• Filtro de Spam
• Detecção de Invasão de Redes
• Análise de Mídias Sociais em Tempo Real
• Análise de Stream de Cliques em Sites, gerando Sistemas de Recomendação
• Recomendação de Anúncios em Tempo Real
• Análise do Mercado de Ações

www.datascienceacademy.com.br
Spark Streaming

Coleta e análise dos


Transformação,
dados direto da
sumarização e
fonte e à medida
análise
que são gerados

Previsões em tempo
Machine Learning
real

www.datascienceacademy.com.br
Uma importante vantagem de usar o Spark para Big Data Analytics é a
possibilidade de combinar processamento em batch e processamento de
streaming em um único sistema.

www.datascienceacademy.com.br
Você inicia o
processamento de um

Batch arquivo ou dataset finito,


o Spark processa as
tarefas configuradas e
conclui o trabalho.

Você processa um stream


de dados contínuos; a

Streaming execução não pára até


que haja algum erro ou
você termine a aplicação
manualmente.

www.datascienceacademy.com.br
Batch

• Análise exploratória de dados


• Gerar Data Warehouses sobre grandes conjuntos de dados, estilo OLAP
• Treinar um modelo de aprendizado de máquina sobre grandes conjuntos de dados
• Outras tarefas analíticas que antes eram feitas com Hadoop MapReduce

www.datascienceacademy.com.br
Streaming

• Monitoramento de serviços
• Processamento de eventos em tempo real para alimentação de dashboards
• Processamento dados de cliques e eventos em web sites
• Processamento de dados de sensores de Internet das Coisas
• Processamento de dados vindos de serviços como: Twitter, Kafka, Flume, AWS Kinesis

www.datascienceacademy.com.br
Big Data never stops!

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Spark Streaming
A velocidade com que você passa o
cartão de crédito

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Apenas a título de
curiosidade, a Tesla está
trabalhando em um projeto de
cápsula de transporte
supersônica!!

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Quando um cliente utiliza o cartão de crédito para
Objetivo 1 uma transação, o vendedor precisa saber em tempo
real a resposta para a frase: É uma fraude?

Precisamos manter um histórico de decisões de


Objetivo 2 fraude feitas pelo sistema. Esse histórico deve estar
disponível para outros sistemas da empresa.

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Um Streaming de dados é como um dataset contínuo, infinito.
Vamos retirando porções deste dataset, analisando, tomando
decisões e armazenando para análise futuras. Trabalhar com
Streaming de dados é sem dúvida um grande desafio.

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Apache Spark
Processamento iterativo – várias tarefas em sequência
Processamento interativo – análise exploratória de dados

www.datascienceacademy.com.br
Arquitetura Spark Streaming

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Output – Sistemas
Input – Stream de
externos
dados

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Spark Streaming =

www.datascienceacademy.com.br
Principais Frameworks para processamento de Streaming de Dados:

• Apache Samza
• Apache Storm
• Apache Flink
• Apache Spark Streaming

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
DStreams – Discretized Streams

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Os DStreams oferecem muitas das operações que
podem ser realizadas com os RDD’s, mais as operações
relacionadas ao tempo, como sliding windows.

www.datascienceacademy.com.br
Streams

Receivers

RDD DStreams – batches de dados para um


DStreams

determinado período de tempo


RDD

RDD

Transformação e output para outros


sistemas

www.datascienceacademy.com.br
Receivers

RDD
DStreams

Processamento Paralelo
RDD

RDD

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
O que pode ser feito com DStreams?

• Map
• FlatMap
• Filter
• reduceByKey
• Join
• Window

www.datascienceacademy.com.br
O que pode ser feito com DStreams?

• Manter o controle de estado dos dados (Stateful Data)

Exemplo: coletar streams de cliques em um web site e


manter a associação dos dados com a sessão ou ip do
usuário

www.datascienceacademy.com.br
O DStream permite converter um conjunto de
dados contínuo em um conjunto discreto de
RDD’s (DStream significa Discretized Streams)

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Windowing

www.datascienceacademy.com.br
Windowing
Computed Windowed

O Spark Streaming oferece o que chamamos de computed windowed, que


pode ser traduzido como computação em uma janela de tempo. Este
recurso é usado para aplicar operações de transformação sobre os dados
em uma janela específica.

www.datascienceacademy.com.br
Windowing
O Streaming de dados é como se fosse
um dataset contínuo, que está sendo
carregado o tempo todo, de forma
intermitente. Como os dados são um
fluxo contínuo, podemos querer visualizar
e manipular dados em uma janela de
tempo específica. Esse é o conceito do
windowing.

www.datascienceacademy.com.br
Windowing

Window length – duração da window (3 unidades de tempo nesse caso)


Sliding interval – intervalo entre as windows

www.datascienceacademy.com.br
Windowing

ssc = StreamingContext(sc, INTERVALO_BATCH)

window( windowDuration: Duration, slideDuration: Duration): DStream[ T]

www.datascienceacademy.com.br
Windowing

Windowing permite computar os resultados ao longo


de períodos de tempo maiores que o batch interval

www.datascienceacademy.com.br
Windowing

Batch interval = 1 segundo

Window length = 1 hora

www.datascienceacademy.com.br
Windowing

Batch Sliding Window


Interval Interval Interval

Frequência com Frequência com Intervalo de


que os dados que uma window tempo capturado
são capturados é aplicada para computação
em um DStream e geração de
resultados

www.datascienceacademy.com.br
Windowing
Window interval
Batch interval

Batch Batch Batch Batch Batch Batch

Computação Computação Computação

Sliding interval

www.datascienceacademy.com.br
Windowing

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Tolerância a Falhas

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Todos os dados são
replicados para no
mínimo 2 worker nodes

www.datascienceacademy.com.br
Um diretório de checkpoint pode
ser usado para armazenar o
estado do streaming de dados,
no caso em que é necessário
reiniciar o streaming

ssc.checkpoint()

www.datascienceacademy.com.br
Falha no Driver Context
Falha no Receiver
(script)

www.datascienceacademy.com.br
Falha no Receiver

• Alguns receivers são melhores que outros.

• Receivers como Twitter, Kafka e Flume são permitem recuperação de dados. Se o


receiver falha, os dados do streaming são perdidos.

• Outros receivers garantem a recuperação dos dados em caso de falhas: HDFS,


Directely-consumed Kafka, Pull-based Flume.

www.datascienceacademy.com.br
Falha no Driver Context

• Embora os dados sejam replicados para os worker nodes, o DriverContext é


executado no node Master e este pode ser um ponto único de falha.

• Podemos usar checkpoint() para recuperar dados em caso de falhas e usamos a


função StreamingContext.getOrCreate() para continuar o processamento de onde ele
foi interrompido em caso de falha.

• Em caso de falha no seu script sendo executado no DriverContext, podemos reiniciar


automaticamente o processo de streaming, usando o Zookeeper (no modo
supervise). O Zookeeper é um cluster manager usado pelo Spark.

www.datascienceacademy.com.br
O Spark Streaming é usado em ambientes de produção, como o do Uber por exemplo. O sistema está mais do
que testado e oferce segurança para aplicações de missão crítica. Mas ele requer as configurações certas, tanto
na parte de infraestrutura quanto na parte de aplicação, aquela criada por você, cientista de dados.

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Integração com Outros Sistemas
Kafka, Flume, Kinesis

www.datascienceacademy.com.br
www.datascienceacademy.com.br
O Apache Kafka foi originalmente desenvolvido pelo LinkedIn e
posteriormente liberado como um projeto open-source, em 2011. O
Apache Kafka é um sistema para gerenciamento de fluxos de dados
em tempo real, gerados a partir de web sites, aplicações e sensores.
Algumas das empresas que usam Kafka: LinkedIn, Netflix, PayPal,
Spotify, Uber, AirBnB, Cisco, Goldman Sachs e SalesForce.
Recentemente a IBM anunciou a criação de dois projetos envolvendo
o Apache Kafka. O LinkedIn possui o maior ambiente Kafka do qual se
tem notícia, com 1.1 trilhão de mensagens por dia ( dados de 2015).

www.datascienceacademy.com.br
Servidores web
gerando logs

Spark Streaming
Receiver

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Transportar dados entre Enriquecer a análise de
diversos sistemas de dados dados

www.datascienceacademy.com.br
Soluções Similares ao Kafka

• IBM InfoSphere Streams


• Informatica’s Ultra Messaging Streaming Edition
• SAS’s Event Stream Processing Engine (ESP)
• Tibco’s StreamBase

• DataTorrent
• Splunk
• Loggly
• Logentries
• Glassbeam

www.datascienceacademy.com.br
É necessário instalar o pacote spark-streaming-kafka

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Push-Based Flume x Pull-Based Flume

www.datascienceacademy.com.br
É necessário instalar o pacote spark-streaming-flume – Push-Based

É necessário instalar o pacote spark-streaming-flume-sink – Pull-Based

www.datascienceacademy.com.br
Ou

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Spark
Streaming

www.datascienceacademy.com.br
É necessário instalar o pacote spark-streaming-kinesis-asl

Requer Licença da Amazon

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Processamento de Linguagem
Natural

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Processamento de Linguagem Natural

www.datascienceacademy.com.br
O computador espera que a
linguagem humana seja
precisa, não ambígua e
altamente estruturada

www.datascienceacademy.com.br
PLN

Processamento de
Linguagem Natural

www.datascienceacademy.com.br
PLN

Processamento de
Linguagem Natural

www.datascienceacademy.com.br
Talvez você não saiba, mas você utiliza PLN em aplicações como:

• Corretores Ortográficos (Microsoft Word)


• Engines de Reconhecimento de Voz (Siri, Google Voice)
• Classificadores de Spam
• Mecanismos de Busca (Google, Bing)
• IBM Watson

www.datascienceacademy.com.br
Processamento de Linguagem Natural

• Análise morfológica
• Análise sintática
• Análise semântica
• Análise pragmática

www.datascienceacademy.com.br
Análise de
Sentimentos

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Pacotes Gratuitos para PLN

• GATE (General Architecture for Text Engineering)


• Mallet (Machine Learning for Language Toolkit)
• OpenNLP
• UIMA
• Genism
• Natural Language Toolkit (NLTK)

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br

Potrebbero piacerti anche