Você está na página 1de 133

Big Data Real-Time Analytics com

Python e Spark

www.datascienceacademy.com.br
Seja bem-vindo!

www.datascienceacademy.com.br
Apache Spark

www.datascienceacademy.com.br
Introdução
Apache Spark é um dos assuntos mais quentes do
momento em tecnologias de Big Data Analytics. A
quantidade de dados gerados em todo o mundo aumenta
de forma exponencial e o Spark é claramente a solução
computacional expressamente concebida para lidar com
este nível de crescimento. Primeiramente criado como
parte de um projeto de pesquisa na Universidade de
Berkeley nos EUA, Spark é um projeto open source no
universo do Big Data, construído para análises
sofisticadas, velocidade de processamento e facilidade de
uso. Ele unifica capacidades críticas de análise de dados,
como SQL, análise avançada em Machine Learning e
streaming de dados, tudo isso em uma única estrutura.

www.datascienceacademy.com.br
www.datascienceacademy.com.br
 Spark realiza operações de MapReduce
 Spark pode utilizar o HDFS
 Spark permite construir um workflow de Analytics
 Spark utiliza a memória do computador de forma diferente e eficiente
 Spark é veloz
 Spark é flexível
 Spark é gratuito

www.datascienceacademy.com.br
Por que Aprender Apache Spark?

Por diversas razões: é atualmente uma das tecnologias mais quentes em Big
Data Analytics, devido sua velocidade de processamento. Mais e mais
empresas estão adotando infraestrutura de Big Data que tem o Spark como um
dos componentes principais. Existe cada vez mais suporte de outras empresas
e alta demanda por profissionais que conheçam processamento de dados em
tempo real.

www.datascienceacademy.com.br
Como Vamos Estudar o Spark?

• Capítulo 6 - Arquitetura do Spark, Transformações, Ações, PySpark


• Capítulo 7 - Spark SQL
• Capítulo 8 - Spark Streaming e Análise de Dados em Tempo Real
• Capítulo 9 - Machine Learning em Streaming de Dados com Spark MLlib

www.datascienceacademy.com.br
Como Vamos Estudar o Spark?

• Capítulo 6

 Introdução ao Spark
 Arquitetura
 PySpark e Jupyter Notebook
 RDD’s
 Lazy Evaluation
 Transformações
 Ações

www.datascienceacademy.com.br
O Spark é um tema avançado!

www.datascienceacademy.com.br
A dedicação é o combustível que nos move.
Ela é a responsável pelo nosso sucesso.

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Apache Spark e Big Data

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Como armazenar e processar todos
esses dados, se o volume aumenta de
forma exponencial?

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Apache Spark é um sistema de análise de dados distribuído e altamente escalável que
permite processamento em memória, o desenvolvimento de aplicações em Java, Scala e
Python, assim como linguagem R. É atualmente um dos principais projetos da Apache
Foundation. O Spark estende as funcionalidades do MapReduce, suportando tarefas mais
eficientes de computação como queries iterativas e processamento de streams de dados.
Velocidade é importante quando processamos grandes conjuntos de dados e uma das
principais características do Spark é exatamente sua velocidade, permitindo o
processamento de dados em memória e em disco.

www.datascienceacademy.com.br
O Spark uitiliza a memória distribuída através de
diversos computadores, os nodes de um cluster. O
preço da memória dos computadores vem caindo
ano após ano e como o processamento em
memória é muito mais rápido que o processamento
em disco, o Spark é uma tecnologia realmente
promissora. Enquanto o Hadoop armazena os
resultados intermediários do processamento, em
disco, o Spark armazena os resultados
intermediários em memória. Esse é basicamente o
grande diferencial do Spark.

www.datascienceacademy.com.br
Apache Spark é um framework open-source para
processamento de Big Data construído para ser veloz,
fácil de usar e para análises sofisticadas.

www.datascienceacademy.com.br
Apache Spark é uma ferramenta de análise de Big Data,
escalável e eficiente.

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Ecosistema Spark

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Spark Framework

Python R Scala Java Tools Programação

SparkSQL MLlib GraphX Streaming Bibliotecas

Spark Core Engine

Spark Scheduler YARN Mesos Gerenciamento

Local HDFS RDBMS NoSQL S3 Armazenamento

www.datascienceacademy.com.br
Quando usamos o Spark?

www.datascienceacademy.com.br
Quando usamos o Spark?

• Integração de Dados e ETL


• Análises Interativas
• Computação em Batch de Alta Performance
• Análises Avançadas de Machine Learning
• Processamento de Dados em Tempo Real

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Apache Spark

www.datascienceacademy.com.br
Verificando a Instalação do Spark

www.datascienceacademy.com.br
Diretórios de Instalação do Spark

www.datascienceacademy.com.br
Diretórios de Instalação do Spark

Diretório Objetivo
bin Executáveis
conf Arquivos de configuração
data Datasets
examples Scripts de exemplo
jars Arquivos .jar
licenses Licenças de uso
python Biblioteca Python
R Biblioteca R
sbin Executáveis e configuração do cluster
yarn Gestão do Cluster
www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
MapReduce x Spark

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
O Spark realiza o processamento distribuído, de forma
similar ao Hadoop MapReduce, porém com muito
mais velocidade.

www.datascienceacademy.com.br
O Spark não possui sistema de armazenamento,
podendo usar o HDFS como fonte de dados.

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
+

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
RDD’s = Resilient Distributed Datasets

www.datascienceacademy.com.br
www.datascienceacademy.com.br
• O Spark suporta mais do que apenas as funções de Map e Reduce
• Hadoop MapReduce grava os resultados intermediários em disco, enquanto o Spark grava os resultados
intermediários em memória, o que é muito mais rápido
• O Spark fornece APIs concisas e consistentes em Scala, Java e Python (e mais recentemente em R)
• O spark oferece shell interativo para Scala, Python e R
• O Spark pode utilizar o HDFS como uma de suas fontes de dados

www.datascienceacademy.com.br
O Cientista de Dados é responsável por definir as regras de
manipulação e análise de dados

O Spark e o Hadoop MapReduce tem uma característica


principal em comum: são responsáveis por gerenciar o
processamento distribuído

www.datascienceacademy.com.br
Porém o Spark faz isso de forma muito mais rápida que o
Hadoop MapReduce

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Arquitetura Spark

www.datascienceacademy.com.br
Exstem basicamente 3 perfis de profissionais que vão trabalhar com Spark:

• Cientistas de Dados
• Engenheiros de Dados
• Administradores

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Anatomia de uma
Aplicação Spark

Aplicação Spark = Instância de um Spark Context

www.datascienceacademy.com.br
Anatomia de uma
Aplicação Spark

www.datascienceacademy.com.br
Anatomia de uma
Aplicação Spark

Shell – área de trabalho via linha de comando


Spark Context – conexão ao ambiente Spark
sc – Spark Context criado quando iniciamos o pyspark

www.datascienceacademy.com.br
Anatomia de uma
Aplicação Spark

PySpark

www.datascienceacademy.com.br
Quando utilizamos o PySpark e o Jupyter Notebook não precisamos nos
preocupar com a criação do Spark Context.

Mas quando criamos uma aplicação de análise de dados (um arquivo .py por
exemplo) e utilizamos o spark-submit para iniciar nossa aplicação, precisamos
explicitamente criar um Spark Context.

www.datascienceacademy.com.br
Arquitetura Spark
Master/Worker

www.datascienceacademy.com.br
Arquitetura Spark Aplicação
Master/Worker

node

www.datascienceacademy.com.br
Arquitetura Spark Aplicação
Master/Worker

www.datascienceacademy.com.br
Arquitetura Spark Aplicação
Master/Worker

www.datascienceacademy.com.br
Arquitetura Spark
Master/Worker

Spark Driver

www.datascienceacademy.com.br
Arquitetura Spark
Spark Driver

www.datascienceacademy.com.br
Arquitetura Spark
Spark Context

www.datascienceacademy.com.br
Arquitetura Spark
Cluster Manager

www.datascienceacademy.com.br
Arquitetura Spark
Worker Node

Worker = host = node = computador

www.datascienceacademy.com.br
Arquitetura Spark
Executor

www.datascienceacademy.com.br
Arquitetura Spark
Task

www.datascienceacademy.com.br
Como uma aplicação é executada no Spark

www.datascienceacademy.com.br
Spark Modes

Modo Modo Modo


Batch Interativo Streaming

www.datascienceacademy.com.br
Deploy Mode

Cluster em Nuvem
Local
(Databricks, Amazon EC2, IBM
(Standalone ou Cluster)
Bluemix

Cluster
Única JVM
Gerenciado

www.datascienceacademy.com.br
Fontes de Dados para o Spark

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

www.datascienceacademy.com.br
RDD
Resilient Distributed Datasets

www.datascienceacademy.com.br
RDD é uma coleção de objetos distribuída e imutável. Cada
conjunto de dados no RDD é dividido em partições lógicas, que
podem ser computados em diferentes nodes do cluster.

www.datascienceacademy.com.br
RDD’s são imutáveis

www.datascienceacademy.com.br
Arquivos

HDFS

RDBMS

NoSQL

www.datascienceacademy.com.br
Existem 2 formas de criar o RDD

Paralelizando uma Referenciando um


coleção existente dataset externo
(função sc.parallelize) (HDFS, RDBMS, NoSQL, S3)

www.datascienceacademy.com.br
As RDD’s são a essência do
funcionamento do Spark

www.datascienceacademy.com.br
Hadoop MapReduce

www.datascienceacademy.com.br
Spark

www.datascienceacademy.com.br
Por padrão, os RDD’s são computados cada vez que executamos uma
Ação. Entretanto, podemos ”persistir” o RDD na memória (ou mesmo
no disco) de modo que os dados estejam disponíveis ao longo do
cluster e possam ser processados de forma muito mais rápida pelas
operações de análise de dados criadas por você, Cientista de Dados.

www.datascienceacademy.com.br
O RDD suporta dois tipos de operações:

Transformações Ações

map() reduce()
filter() collect()
flatMap() first()
reduceByKey() take()
aggregateByKey countByKey()

www.datascienceacademy.com.br
Transformações e Ações

www.datascienceacademy.com.br
Transformações e Ações

Resultados
Lazy
Evaluation

Carrega e
Transforma os Dados
www.datascienceacademy.com.br
As ”Ações” aplicam as ”Transformações” nos RDD’s
e retornam resultado

www.datascienceacademy.com.br
Características dos RDD’s:

• Spark é baseado em RDD’s. Criamos, transformamos e armazenamos RDD’s em Spark.

• RDD representa uma coleção de elementos de dados particionados que podem ser operados em paralelo.

• RDD’s são objetos imutáveis. Eles não podem ser alterados uma vez criados.

• RDD’s podem ser colocados em cache e permitem persistência (mesmo objeto usado entre sessões diferentes).

• Ao aplicarmos Transformações em RDD’s criamos novos RDD’s.

• Ações aplicam as Transformações nos RDD’s e geram um resultado.

www.datascienceacademy.com.br
RDD’s

Imutablidade
Particionado e Distribuído
Importante quando se realiza
processamento paralelo. Armazenamento em Memória
Permite processar arquivos
através de diversos
computadores. Processamento muito mais
veloz, permitindo armazenar
os resultados intermediários
em memória.

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Transformações

São operações preguiçosas (lazy operations) executadas sobre os


RDD’s e que criam um ou mais RDD’s.

www.datascienceacademy.com.br
Transformações

www.datascienceacademy.com.br
Transformações

Após executar operações de Transformação no RDD, o RDD


resultante será diferente do RDD original e poderá ser menor (se
usadas as funções filter, count, distinct, sample) ou maior (se
usadas as funções flatMap, union, cartesian)

www.datascienceacademy.com.br
Transformações

• Realizam as operações em um RDD e criam um novo RDD


• Operações são feitas em um elemento por vez
• Lazy Evaluation
• Pode ser distribuída através de múltiplos nodes

www.datascienceacademy.com.br
Transformações

Algumas operações de Tranformação podem ser colocadas no


que o Spark chama de Pipeline, que é um encadeamento de
transformações visando aumentar a perfomance

www.datascienceacademy.com.br
Transformações

Narrow Wide

Resultado de funções Resultado de funções


como map() e filter() e como groupByKey() e
os dados vem de uma reduceByKey() e os
única partição dados podem vir de
diversas partições

www.datascienceacademy.com.br
Transformações

mapPartition

www.datascienceacademy.com.br
Principais Operações de
Transformação

www.datascienceacademy.com.br
Map

• Conceito de MapReduce
• Age sobre cada elemento e realiza a mesma operação

www.datascienceacademy.com.br
flatMap

• Funciona como a função Map, mas retorna mais elementos

www.datascienceacademy.com.br
Filter

• Filtra um RDD para retornar elementos

www.datascienceacademy.com.br
Set

• São realizadas em duas RDD’s, com operações de união e interseção

www.datascienceacademy.com.br
http://spark.apache.org/docs/latest/programming-guide.html#transformations

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Ações

São operações executadas sobre os RDD’s que geram um resultado.

www.datascienceacademy.com.br
Ações

www.datascienceacademy.com.br
Ações

Impressão das
Divisão do
Leitura de um Mapeamento de Redução por palavras com
arquivo em Ordenação
arquivo cada palavra agregação maior
linhas
ocorrência

RDD Transformação Transformação Transformação Transformação Ação

www.datascienceacademy.com.br
Ações

Ações são operações síncronas mas podemos usar a função


AsyncRDDActions() para tornar as operações assíncronas

www.datascienceacademy.com.br
Ações

www.datascienceacademy.com.br
Ações

Nós devemos colocar os RDD’s em cache, sempre que for


necessário executar duas ou mais Ações no conjunto de dados.
Isso melhora a performance.

www.datascienceacademy.com.br
Ações

Caching Persistence

cache() persistence()

www.datascienceacademy.com.br
Ações

www.datascienceacademy.com.br
E podemos checar o valor usando
a função getStorageLevel()

www.datascienceacademy.com.br
http://spark.apache.org/docs/latest/programming-guide.html#actions

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Ações

Age no RDD para produzir um resultado

www.datascienceacademy.com.br
http://spark.apache.org/docs/latest/programming-guide.html#actions

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br