SlideShare uma empresa Scribd logo
Desenvolvendo
Aplicações baseadas
em Big Data com
PySpark
Sobre
Vinícius Aires Barros
Ciência da Computação 2016 - UFT
Mestrando em Ciência da Computação - ICMC USP
Laboratório de Sistemas Distribuídos e Programação Concorrente -
LaSDPC
Áreas de Interesse: IoT, Distributed Systems, Big Data e Data Science.
GitHub: @v4ires
Website: http://viniciusaires.me
E-mail: v4ires@gmail.com
Big Data
Sinônimo de grande volume de dados?
“Big Data é definido como um
conjunto de dados estruturados ou
não estruturados que não puderam
ser percebidos, adquiridos,
gerenciados e processados pelos
modelos tradicionais de hardware e
software”.
Conceitos
● Grandes Volumes de Dados
● Programação de Alto Desempenho
(HPC)
● Dados Estruturados, Não
Estruturados e Semiestruturados
● Bancos de Dados SQL e NoSQL
● MapReduce
● Apache Hadoop, Spark, etc.
Timeline
6
Apache HadoopMapReduce
2003
Google File
System
2004 2006
Spark
UC Berkeley
Lab
2009
Apache Spark
2013
Apache Spark se torna
um projeto Top Level
da Apache
2014
4V’s do Big Data
Sistemas de Arquivos Distribuídos
Bancos de Dados Distribuídos
Casos de Uso
● Sistemas de Recomendação
● Aprendizagem de Máquina
● Processamento de Imagens
● Mineração de Dados
● etc.
Desafios
● Escalabilidade
● Dados Complexos
● Interoperabilidade
● Latência
● Velocidade de Escrita
em Disco e de RAM
● etc.
Modelo de Programação MapReduce
● Google
● Programação
Paralela/Disribuída;
● Funções: Map & Reduce;
● Simplificação dos modelos de
programação paralela e
concorrente tradicionais;
● Tolerância a falhas;
● Escalabilidade.
Funcionamento do MapReduce
Lightning-fast unified analytics engine
Apache Spark
O que é o Apache Spark?
O Apache Spark é um software de código aberto
mantido pela Apache Foundation que tem como
propósito fornecer uma implementação livre e
melhorada do modelo de programação MapReduce.
Características
❏ Implementação em Scala
❏ Arquitetura Mestre Escravo (Master/Slave)
❏ Modelo de Programação MapReduce
❏ Resilient Distributed Dataset (RDD)
❏ Memória Principal (RAM)
❏ Processamento Distribuído
❏ Processamento em Tempo Real
❏ Escalável
❏ Tolerante a Falhas
❏ Integração com HDFS
O que não é?
❏ Linguagem de Programação
❏ Solução Definitiva
❏ Substituto do Apache Hadoop
Arquitetura Apache Spark
Resilient Distributed Dataset (RDD)
Quem utiliza?
Literatura Básica
Execução do Apache Spark
1. Acessem:
http://github.com/v4ires/caipyra-2
018-pyspark
2. Tenham o docker instalado
3. Executem o Container
4. Pronto :)
PySpark (Python + Spark)
● Interface de programação em
Python
● Py4J (Interface de integração
do Java com Python)
● Modo Iterativo de Programação
● Suporte a Python 2 e 3
● Integração com Jupyter
● Integração com bibliotecas
Python (Scipy, Matplotlib,
Seaborn...)
Operadores PySpark
● Transformações
○ Map
○ FlatMap
○ Filter
○ GroupByKey
○ outros.
● Ações:
○ Take
○ Count
○ Collect
○ outros.
Desenvolvendo Aplicações baseadas em Big Data com PySpark
Exemplo Prático I
WordCount (Contador de Palavras)
Hello World (World Count)
Transformações
Alguns exemplos de transformações com RDD
Map
A função de map é repetida em todas as linhas do RDD e gera um novo RDD como
saída. Usando a transformação map(), utilizamos qualquer função, e essa função é
aplicada a todos os elementos do RDD. Por exemplo, temos um RDD [1, 2, 3, 4, 5]
se aplicarmos “rdd.map(x => x + 2)”, será obtido o resultado (3, 4, 5, 6, 7).
FlatMap
Na função flatMap() para cada elemento de entrada temos muitos elementos em um
RDD de saída. O uso mais simples de flatMap() é dividir cada string de entrada em
palavras. Map e flatMap são semelhantes na maneira que eles pegam uma linha da
entrada RDD e aplicam uma função nessa linha. A principal diferença entre map() e
flatMap() é que a função map() retorna apenas um elemento, enquanto flatMap()
pode retornar uma lista de elementos.
Filter
A função RDD filter() retorna um novo RDD, contendo apenas os elementos que
atendem a um predicado. Por exemplo, suponha que o RDD contenha primeiro
cinco números naturais (1, 2, 3, 4 e 5) e o predicado é verificar os números pares.
O RDD resultante após aplicar a função filter() conterá apenas os números pares,
ou seja, 2 e 4.
GroupByKey
Quando usamos groupByKey() em um conjunto de dados de pares (K, V), os
dados são embaralhados de acordo com o valor da chave K em um outro RDD.
ReduceByKey
Quando usamos reduceByKey em um dataset (K, V), os pares na mesma
máquina com a mesma chave são combinados antes que os dados sejam
embaralhados.
Union
Com a função union(), obtemos a união de dois RDD em um novo RDD. A principal
regra dessa função é que os dois RDDs devem ser do mesmo tipo. Por exemplo, os
elementos do RDD1 são {“Spark”, “Spark”, “Hadoop”, “Flink”} e os do RDD2 são {“Big
data”, “Spark”, “Flink”}, portanto, o rdd1.union(rdd2) resultará nos seguintes
elementos {“Spark”, “Spark”, “Spark”, “Hadoop”, “Flink”, “Flink”, “Big Data”}.
SortByKey
Quando aplicamos a função sortByKey() em um conjunto de dados de pares
(K, V), os dados são classificados de acordo com a chave K em outro RDD.
Ações
Alguns exemplos de ações com RDD
Take N
A ação take(n) retorna n primeiros elementos do RDD. Por exemplo, considere o
RDD {1, 2, 3, 4, 5, 6} neste RDD “take(4)” dará resultado {1, 2, 3, 4}.
Top N
A ação top(n) retorna n últimos elementos do RDD. Por exemplo, considere o
RDD {1, 2, 3, 4, 5, 6} neste RDD “top(4)” dará resultado {6, 5, 4, 3}.
Count
A ação count() retorna o número de elementos no RDD. Por exemplo, o RDD
possui valores {1, 2, 3, 4, 6} neste RDD a função “count ()” irá retornar o valor 6.
Collect
A ação collect() é a operação comum e simples que retorna todo o conteúdo de
um RDD para um contexto de memória local. A ação collect() tem como
restrição a capacidade de memória local de armazenar todos dos dados
contidos em um RDD.
Reduce
A função reduce() pega grupos de elementos como entrada do RDD e, em
seguida, produz a saída do mesmo tipo. Diversos operadores podem ser
utilizados na operação de redução, por exemplo, adição, subtração,
multiplicação, divisão, dentre outros.
ForEach
Quando temos uma situação em que queremos aplicar a operação em cada
elemento do RDD, mas não deve retornar o valor para o driver. Neste caso, a
função foreach() é útil. Por exemplo, inserindo um registro no banco de dados.
MLlib
Biblioteca de Aprendizagem de Máquina
K-Means
● Algoritmo de aprendizagem de
Máquina Não Supervisionado
● Algoritmo de Agrupamento ou
Clusterização
● Versão otimizada para uso de
programação paralela/concorrente
● Medida de Distância (Similaridade
de Dados)
Outros exemplos
Exemplos de códigos
Obrigado!
Dúvidas?
Você pode me encontrar:
▸ @v4ires
▸ v4ires@gmail.com

Mais conteúdo relacionado

Mais procurados (20)

PPTX
SPARQL Cheat Sheet
LeeFeigenbaum
 
PDF
Android - Data Storage
MingHo Chang
 
PDF
Indexing
Mike Dirolf
 
PPTX
Présentation de ECMAScript 6
Julien CROUZET
 
PDF
Jena – A Semantic Web Framework for Java
Aleksander Pohl
 
PDF
CNIT 129S: Ch 3: Web Application Technologies
Sam Bowne
 
ODP
Elasticsearch V/s Relational Database
Richa Budhraja
 
PDF
WEBMINING_SOWMYAJYOTHI.pdf
SowmyaJyothi3
 
PPTX
Chp3 - Modélisation Multidimensionnelle
Lilia Sfaxi
 
PPTX
Solr introduction
Lap Tran
 
PPTX
Processing Large Data with Apache Spark -- HasGeek
Venkata Naga Ravi
 
PPTX
OData: A Standard API for Data Access
Pat Patterson
 
PDF
MongoDB World 2019: MongoDB Read Isolation: Making Your Reads Clean, Committe...
MongoDB
 
PDF
Advanced Use of jinja2 for Templates
Keith Resar
 
PPT
9. Document Oriented Databases
Fabio Fumarola
 
PDF
NoSQL Database: Classification, Characteristics and Comparison
Mayuree Srikulwong
 
PDF
BigData_TP2: Design Patterns dans Hadoop
Lilia Sfaxi
 
PPTX
SHACL: Shaping the Big Ball of Data Mud
Richard Cyganiak
 
PPTX
MongoDB
nikhil2807
 
SPARQL Cheat Sheet
LeeFeigenbaum
 
Android - Data Storage
MingHo Chang
 
Indexing
Mike Dirolf
 
Présentation de ECMAScript 6
Julien CROUZET
 
Jena – A Semantic Web Framework for Java
Aleksander Pohl
 
CNIT 129S: Ch 3: Web Application Technologies
Sam Bowne
 
Elasticsearch V/s Relational Database
Richa Budhraja
 
WEBMINING_SOWMYAJYOTHI.pdf
SowmyaJyothi3
 
Chp3 - Modélisation Multidimensionnelle
Lilia Sfaxi
 
Solr introduction
Lap Tran
 
Processing Large Data with Apache Spark -- HasGeek
Venkata Naga Ravi
 
OData: A Standard API for Data Access
Pat Patterson
 
MongoDB World 2019: MongoDB Read Isolation: Making Your Reads Clean, Committe...
MongoDB
 
Advanced Use of jinja2 for Templates
Keith Resar
 
9. Document Oriented Databases
Fabio Fumarola
 
NoSQL Database: Classification, Characteristics and Comparison
Mayuree Srikulwong
 
BigData_TP2: Design Patterns dans Hadoop
Lilia Sfaxi
 
SHACL: Shaping the Big Ball of Data Mud
Richard Cyganiak
 
MongoDB
nikhil2807
 

Semelhante a Desenvolvendo Aplicações baseadas em Big Data com PySpark (20)

PDF
Aula9-Spark-Básico sematix com dataframes
ronaldorclamaster21
 
PDF
Pré processamento de grandes dados com Apache Spark
Felipe
 
PDF
Map reduce novas abordagens para o processo de datamining em grandes volumn...
João Gabriel Lima
 
PDF
Modelos de computação distribuída no Hadoop
Big Data Week São Paulo
 
PDF
Apache Spark Overview and Applications
Diogo Munaro Vieira
 
ODP
Bigdata na pratica: Resolvendo problemas de performance com hadoop
tdc-globalcode
 
PDF
Cientista de Dados – Dominando o Big Data com Software Livre
Ambiente Livre
 
ODP
Seminário Hadoop
Ivanilton Polato
 
PPT
Mapreduce - Conceitos e Aplicações
Guilherme Araújo
 
ODP
Rodando um Recomendador no Hadoop usando Mahout
Ivanilton Polato
 
PPTX
Pos-QCon-BigData
Fernando Cicconeto
 
PDF
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
Deep Tech Brasil
 
PDF
Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...
Mauricio Cesar Santos da Purificação
 
PPTX
Big Data com MATLAB (Tiago Monteiro), Webinar ao vivo
Opencadd Advanced Technology
 
PDF
Treinamento hadoop - dia4
Alexandre Uehara
 
PDF
Hadoop MapReduce and Apache Spark on EMR: comparing performance for distribut...
Felipe
 
PDF
Hadoop map reduce and apache spark comparing performance for distributed wor...
Rosangela Oliveira
 
PDF
BigData MapReduce
João Gabriel Lima
 
Aula9-Spark-Básico sematix com dataframes
ronaldorclamaster21
 
Pré processamento de grandes dados com Apache Spark
Felipe
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
João Gabriel Lima
 
Modelos de computação distribuída no Hadoop
Big Data Week São Paulo
 
Apache Spark Overview and Applications
Diogo Munaro Vieira
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
tdc-globalcode
 
Cientista de Dados – Dominando o Big Data com Software Livre
Ambiente Livre
 
Seminário Hadoop
Ivanilton Polato
 
Mapreduce - Conceitos e Aplicações
Guilherme Araújo
 
Rodando um Recomendador no Hadoop usando Mahout
Ivanilton Polato
 
Pos-QCon-BigData
Fernando Cicconeto
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
Deep Tech Brasil
 
Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...
Mauricio Cesar Santos da Purificação
 
Big Data com MATLAB (Tiago Monteiro), Webinar ao vivo
Opencadd Advanced Technology
 
Treinamento hadoop - dia4
Alexandre Uehara
 
Hadoop MapReduce and Apache Spark on EMR: comparing performance for distribut...
Felipe
 
Hadoop map reduce and apache spark comparing performance for distributed wor...
Rosangela Oliveira
 
BigData MapReduce
João Gabriel Lima
 
Anúncio

Mais de Vinícius Barros (8)

PDF
Uma Abordagem para a Integração de Diferentes Fontes de Dados Provenientes de...
Vinícius Barros
 
PDF
Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...
Vinícius Barros
 
PDF
A importância do ecossistema Java em aplicações baseadas em Big Data
Vinícius Barros
 
PDF
Introdução ao Apache Hadoop
Vinícius Barros
 
PDF
Apresentação LaSDPC
Vinícius Barros
 
PDF
Apresentação Programação Concorrente USP
Vinícius Barros
 
PDF
Implantação da ferramenta para manutenção de serviços "UFT Serviços" baseado ...
Vinícius Barros
 
PDF
Apresentação Coding Dojo em 10 minutos
Vinícius Barros
 
Uma Abordagem para a Integração de Diferentes Fontes de Dados Provenientes de...
Vinícius Barros
 
Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...
Vinícius Barros
 
A importância do ecossistema Java em aplicações baseadas em Big Data
Vinícius Barros
 
Introdução ao Apache Hadoop
Vinícius Barros
 
Apresentação LaSDPC
Vinícius Barros
 
Apresentação Programação Concorrente USP
Vinícius Barros
 
Implantação da ferramenta para manutenção de serviços "UFT Serviços" baseado ...
Vinícius Barros
 
Apresentação Coding Dojo em 10 minutos
Vinícius Barros
 
Anúncio

Desenvolvendo Aplicações baseadas em Big Data com PySpark

  • 2. Sobre Vinícius Aires Barros Ciência da Computação 2016 - UFT Mestrando em Ciência da Computação - ICMC USP Laboratório de Sistemas Distribuídos e Programação Concorrente - LaSDPC Áreas de Interesse: IoT, Distributed Systems, Big Data e Data Science. GitHub: @v4ires Website: http://viniciusaires.me E-mail: [email protected]
  • 3. Big Data Sinônimo de grande volume de dados?
  • 4. “Big Data é definido como um conjunto de dados estruturados ou não estruturados que não puderam ser percebidos, adquiridos, gerenciados e processados pelos modelos tradicionais de hardware e software”.
  • 5. Conceitos ● Grandes Volumes de Dados ● Programação de Alto Desempenho (HPC) ● Dados Estruturados, Não Estruturados e Semiestruturados ● Bancos de Dados SQL e NoSQL ● MapReduce ● Apache Hadoop, Spark, etc.
  • 6. Timeline 6 Apache HadoopMapReduce 2003 Google File System 2004 2006 Spark UC Berkeley Lab 2009 Apache Spark 2013 Apache Spark se torna um projeto Top Level da Apache 2014
  • 8. Sistemas de Arquivos Distribuídos
  • 9. Bancos de Dados Distribuídos
  • 10. Casos de Uso ● Sistemas de Recomendação ● Aprendizagem de Máquina ● Processamento de Imagens ● Mineração de Dados ● etc.
  • 11. Desafios ● Escalabilidade ● Dados Complexos ● Interoperabilidade ● Latência ● Velocidade de Escrita em Disco e de RAM ● etc.
  • 12. Modelo de Programação MapReduce ● Google ● Programação Paralela/Disribuída; ● Funções: Map & Reduce; ● Simplificação dos modelos de programação paralela e concorrente tradicionais; ● Tolerância a falhas; ● Escalabilidade.
  • 14. Lightning-fast unified analytics engine Apache Spark
  • 15. O que é o Apache Spark? O Apache Spark é um software de código aberto mantido pela Apache Foundation que tem como propósito fornecer uma implementação livre e melhorada do modelo de programação MapReduce.
  • 16. Características ❏ Implementação em Scala ❏ Arquitetura Mestre Escravo (Master/Slave) ❏ Modelo de Programação MapReduce ❏ Resilient Distributed Dataset (RDD) ❏ Memória Principal (RAM) ❏ Processamento Distribuído ❏ Processamento em Tempo Real ❏ Escalável ❏ Tolerante a Falhas ❏ Integração com HDFS
  • 17. O que não é? ❏ Linguagem de Programação ❏ Solução Definitiva ❏ Substituto do Apache Hadoop
  • 22. Execução do Apache Spark 1. Acessem: http://github.com/v4ires/caipyra-2 018-pyspark 2. Tenham o docker instalado 3. Executem o Container 4. Pronto :)
  • 23. PySpark (Python + Spark) ● Interface de programação em Python ● Py4J (Interface de integração do Java com Python) ● Modo Iterativo de Programação ● Suporte a Python 2 e 3 ● Integração com Jupyter ● Integração com bibliotecas Python (Scipy, Matplotlib, Seaborn...)
  • 24. Operadores PySpark ● Transformações ○ Map ○ FlatMap ○ Filter ○ GroupByKey ○ outros. ● Ações: ○ Take ○ Count ○ Collect ○ outros.
  • 26. Exemplo Prático I WordCount (Contador de Palavras)
  • 28. Transformações Alguns exemplos de transformações com RDD
  • 29. Map A função de map é repetida em todas as linhas do RDD e gera um novo RDD como saída. Usando a transformação map(), utilizamos qualquer função, e essa função é aplicada a todos os elementos do RDD. Por exemplo, temos um RDD [1, 2, 3, 4, 5] se aplicarmos “rdd.map(x => x + 2)”, será obtido o resultado (3, 4, 5, 6, 7).
  • 30. FlatMap Na função flatMap() para cada elemento de entrada temos muitos elementos em um RDD de saída. O uso mais simples de flatMap() é dividir cada string de entrada em palavras. Map e flatMap são semelhantes na maneira que eles pegam uma linha da entrada RDD e aplicam uma função nessa linha. A principal diferença entre map() e flatMap() é que a função map() retorna apenas um elemento, enquanto flatMap() pode retornar uma lista de elementos.
  • 31. Filter A função RDD filter() retorna um novo RDD, contendo apenas os elementos que atendem a um predicado. Por exemplo, suponha que o RDD contenha primeiro cinco números naturais (1, 2, 3, 4 e 5) e o predicado é verificar os números pares. O RDD resultante após aplicar a função filter() conterá apenas os números pares, ou seja, 2 e 4.
  • 32. GroupByKey Quando usamos groupByKey() em um conjunto de dados de pares (K, V), os dados são embaralhados de acordo com o valor da chave K em um outro RDD.
  • 33. ReduceByKey Quando usamos reduceByKey em um dataset (K, V), os pares na mesma máquina com a mesma chave são combinados antes que os dados sejam embaralhados.
  • 34. Union Com a função union(), obtemos a união de dois RDD em um novo RDD. A principal regra dessa função é que os dois RDDs devem ser do mesmo tipo. Por exemplo, os elementos do RDD1 são {“Spark”, “Spark”, “Hadoop”, “Flink”} e os do RDD2 são {“Big data”, “Spark”, “Flink”}, portanto, o rdd1.union(rdd2) resultará nos seguintes elementos {“Spark”, “Spark”, “Spark”, “Hadoop”, “Flink”, “Flink”, “Big Data”}.
  • 35. SortByKey Quando aplicamos a função sortByKey() em um conjunto de dados de pares (K, V), os dados são classificados de acordo com a chave K em outro RDD.
  • 36. Ações Alguns exemplos de ações com RDD
  • 37. Take N A ação take(n) retorna n primeiros elementos do RDD. Por exemplo, considere o RDD {1, 2, 3, 4, 5, 6} neste RDD “take(4)” dará resultado {1, 2, 3, 4}.
  • 38. Top N A ação top(n) retorna n últimos elementos do RDD. Por exemplo, considere o RDD {1, 2, 3, 4, 5, 6} neste RDD “top(4)” dará resultado {6, 5, 4, 3}.
  • 39. Count A ação count() retorna o número de elementos no RDD. Por exemplo, o RDD possui valores {1, 2, 3, 4, 6} neste RDD a função “count ()” irá retornar o valor 6.
  • 40. Collect A ação collect() é a operação comum e simples que retorna todo o conteúdo de um RDD para um contexto de memória local. A ação collect() tem como restrição a capacidade de memória local de armazenar todos dos dados contidos em um RDD.
  • 41. Reduce A função reduce() pega grupos de elementos como entrada do RDD e, em seguida, produz a saída do mesmo tipo. Diversos operadores podem ser utilizados na operação de redução, por exemplo, adição, subtração, multiplicação, divisão, dentre outros.
  • 42. ForEach Quando temos uma situação em que queremos aplicar a operação em cada elemento do RDD, mas não deve retornar o valor para o driver. Neste caso, a função foreach() é útil. Por exemplo, inserindo um registro no banco de dados.
  • 44. K-Means ● Algoritmo de aprendizagem de Máquina Não Supervisionado ● Algoritmo de Agrupamento ou Clusterização ● Versão otimizada para uso de programação paralela/concorrente ● Medida de Distância (Similaridade de Dados)