SlideShare uma empresa Scribd logo
Spark - Básico
Aula 9
Quem sou eu?
2
Eu sou Rodrigo Augusto Rebouças.
Engenheiro de dados da Semantix
Instrutor do Semantix Mentoring Academy
Você pode me encontrar em:
rodrigo.augusto@semantix.com.br
Processamento de Dados
Spark
Processamento de Dados
4
o Map Reduce
o Spark
o Fink
Apache Spark
o Plataforma de computação em cluster
• Suporte
o MapReduce
o Streaming
o Análises interativas
• Execução em memória
• Compatível com Hadoop
o Funciona com YARN
o Acessar os dados
• HDFS
• Tabelas Hive
• Tabelas Hbase
o Linguagem: Scala, Java, Python e R
5
Spark História
o 2009
• Projeto de pesquisa na Universidade da California, Berkeley
o AMPLab
o 2010
• Open source
o 2013
• Apache
o Representação dos dados
• RDD - 2011
• Dataframe - 2013
• Dataset - 2015
• Qual a melhor forma de trabalhar com dados no Spark?
6
Estrutura e inicialização
Spark Ferramentas
o Spark
• ETL e processamento em batch
o Spark SQL
• Consultas em dados estruturados
o Spark Streaming
• Processamento de stream
o Spark MLib
• Machine Learning
o Spark GraphX
• Processamento de grafos
8
Spark Shell
o Ambiente Spark interativo
o Inicialização no Cluster
• pyspark para Python
• spark-shell para Scala
o Se existir a instalação da versão 1 e 2 no cluster
• Versão 1
o pyspark para Python
o spark-shell para Scala
• Versão 2
o pyspark2 para Python
o spark2-shell para Scala
9
DataFrame
Introdução
DataFrame Indrodução
o Representação de dados no spark
o DataFrames
• Dados estruturados e semiestruturados em forma tabular
• Java, Scala e Python
• Operações
o Transformação
o Ação
11
Leitura
DataFrame
DataFrame Leitura de arquivo
o Dados suportados para leitura e escrita no DataFrame
• Text files
o CSV
o JSON
o Plain text
• Binary format files
o Apache Parquet (Muito utilizado)
o Apache ORC
• Tables
o Hive metastore
o JDBC
• Configurar outros tipos
13
DataFrame Leitura de arquivo
14
o val <dataframe> = spark.read.<formato>(“<arquivo>”)
• <formato>
o textFile(“arquivo.txt”)
o csv(“arquivo.csv”)
o jdbc(jdbcUrl, "bd.tabela", connectionProperties)
o load ou parquet(“arquivo.parquet”)
o table(“tabelaHive”)
o json(“arquivo.json“)
o orc(“arquivo.orc”)
• <arquivo>
o “diretório/”
o “diretório/*.log”
o “arq1.txt, arq2.txt”
o “arq*”
DataFrame Leitura de arquivo
o val <dataframe> = spark.read.format("<formato>").load("<arquivo>")
o Opções para configurar o arquivo de leitura
• spark.read.option(...)
scala> val userDF = spark.read.json(“user.json”)
scala> val userDF = spark.read.format(“json”).load(“usr.json”)
15
Ações
DataFrame
DataFrame Operações
o Ação
• count: retorna o número de linhas
• first: retorna a primeira linha
• take(n): retorna as primeiras n linhas como um array
• show(n): exibe as primeiras n linhas da tabela
• collect: Trazer toda a informação dos nós do drive
o Cuidado para não estourar a memória
• distincts: retorna os registros, removendo os repetidos
• write: salvar os dados
• printSchema() Visualizar a estrutura dos dados
o DataFrame sempre tem um esquema associado
DataFrame Exemplo ações
o <dataframe>.<ação>
scala> val clienteDF = spark.read.json("cliente.json")
scala> clienteDF.printSchema()
scala> clienteDF.count()
scala> clienteDF.first()
scala> clienteDF.take(5)
scala> clienteDF.show(5)
scala> clienteDF.distinct()
scala> clienteDF.collect() //Cuidado para estourar memória
DataFrame Salvar Dado
o dadosDF.write.
• save(“arquivoParquet”)
• json("arquivoJson")
• csv(“arquivocsv”)
• saveAsTable("tableHive")
o (/user/hive/warehouse)
scala> dadosDF.write.save(“outputData”)
$ hdfs dfs -ls /user/cloudera/outputData
scala> dadosDF.write. 
mode("append"). 
option("path","/user/root"). 
saveAsTable("outputData")
Transformações
DataFrame
DataFrame Operações
o Transformação
• Imutáveis
o Dados no DataFrame nunca são modificados
• Exemplos
o select: Selecionar os atributos
o where: Filtrar os atributos
o orderBy: Ordenar os dados por atributo
o groupBy: Agrupar os dados por atributo
o join: Mesclar Dados
o limit(n): Limitar a quantidade de registros
DataFrame Transformações
o Transformação individual
• <dataframe>.<ação>
o Sequência de transformações
• <dataframe>.<ação>.<ação>.<ação>.<ação>
scala> val prodQtdDF = prodDF.select("nome","qtd")
scala> val qtd50DF = prodQtdDF.where("qtd > 50")
scala> val qtd50ordDF = qtd50DF.orderBy(“nome”)
scala> qtd50ordDF.show()
scala> prodDF.select("nome","qtd").where("qtd > 50").orderBy(“nome”)
DataFrame – Transformações
o Agrupar (groupBy) com uma função de agregação
• count
• max
• min
• mean
• sum
• pivot
• agg (Funções de agregação adicional)
scala> peopleDF.groupBy(“setor").count()
scala> peopled.show()
DataFrame – Transformações
o Acessar o atributo do dado
• “<atributo>”
• $“<atributo>”
• <dataframe>(“<atributo>”)
scala> prodDF.select("nome","qtd").show()
scala> prodDF.select($"nome", $“qtd” * 0,1).show()
scala> prodDF.where(prodDF("nome").startsWith("A")).show()
Laboratório
Resolução de Exercícios
Exercícios DataFrame
26
1. Enviar o diretório local “/input/exercises-data/juros_selic” para o HDFS em “/user/aluno/<nome>/data”
2. Criar o DataFrame jurosDF para ler o arquivo no HDFS “/user/aluno/<nome>/data/juros_selic/juros_selic.json”
3. Visualizar o Schema do jurosDF
4. Mostrar os 5 primeiros registros do jutosDF
5. Contar a quantidade de registros do jurosDF
6. Criar o DataFrame jurosDF10 para filtrar apenas os registros com o campo “valor” maior que 10
7. Salvar o DataFrame jurosDF10 como tabela Hive “<nome>.tab_juros_selic”
8. Criar o DataFrame jurosHiveDF para ler a tabela “<nome>.tab_juros_selic”
9. Visualizar o Schema do jurosHiveDF
10. Mostrar os 5 primeiros registros do jurosHiveDF
11. Salvar o DataFrame jurosHiveDF no HDFS no diretório “/user/aluno/nome/data/save_juros” no formato parquet
12. Visualizar o save_juros no HDFS
13. Criar o DataFrame jurosHDFS para mostrar o “save_juros” da questão 8
14. Visualizar o Schema do jurosHDFS
15. Mostrar os 5 primeiros registros do jurosHDFS
Obrigado!
Alguma pergunta?
Você pode me encontrar em:
rodrigo.augusto@semantix.com.br

Mais conteúdo relacionado

PDF
Palestra DataFlow - II São Paulo Perl Workshop
PDF
Arquitetando Soluções de Dados com PostgreSQL
PDF
PPTX
SQL Server Heterogêneo: SQL Server + BigData
PDF
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
ODP
CouchDB vs Postgres em Rails
ODP
CouchDB vs PostgreSQL no Rails
PDF
Tecnologias para mineração de dados nas nuvens
Palestra DataFlow - II São Paulo Perl Workshop
Arquitetando Soluções de Dados com PostgreSQL
SQL Server Heterogêneo: SQL Server + BigData
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
CouchDB vs Postgres em Rails
CouchDB vs PostgreSQL no Rails
Tecnologias para mineração de dados nas nuvens

Semelhante a Aula9-Spark-Básico sematix com dataframes (20)

PPTX
Pos-QCon-BigData
PDF
Desenvolvendo Aplicações baseadas em Big Data com PySpark
PDF
MAC5855 - NoSQL
PDF
Gerenciamento de projetos com o Apache Ant
PDF
Gerenciamento de projetos com o Apache Ant
PDF
Mini-Curso de MongoDB
PDF
Mongodb workshop cinlug
PPT
Bancos de Dados Orientados a Objeto
PDF
Curso mongo db com php
PPTX
Introdução no sql mongodb java
PDF
TDC 2016 - Rodando JavaScript Server com Wildfly
KEY
MongoDB - Apresentação
PDF
Mongo db slides
PPT
2006 - ADONET.ppt
PDF
Redis um banco chave valor
PPTX
Desenvolvimento de aplicações PHP com MongoDB
PDF
Apache poi
PDF
Java 9, 10 e ... 11
PPTX
Alinguagem SQL no mundo NOSQL
PDF
Apresentação palestra ireport
Pos-QCon-BigData
Desenvolvendo Aplicações baseadas em Big Data com PySpark
MAC5855 - NoSQL
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
Mini-Curso de MongoDB
Mongodb workshop cinlug
Bancos de Dados Orientados a Objeto
Curso mongo db com php
Introdução no sql mongodb java
TDC 2016 - Rodando JavaScript Server com Wildfly
MongoDB - Apresentação
Mongo db slides
2006 - ADONET.ppt
Redis um banco chave valor
Desenvolvimento de aplicações PHP com MongoDB
Apache poi
Java 9, 10 e ... 11
Alinguagem SQL no mundo NOSQL
Apresentação palestra ireport
Anúncio

Último (9)

PDF
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
PPTX
TURMA modelo de modelo apresentação 4DE.pptx
PDF
Certificado de Conclusão Jornada Inteligência Artificial
PDF
A sua pontuação aumenta ao escolher uma categoria, preencher uma descrição lo...
PDF
Metodologias ágeis - Slides - aulas 1 a 5.pdf
PDF
Apostila_de_Laboratorio_de_Quimica_Inorg.pdf
PPTX
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
PPTX
Classifirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcação_IPAQ.pptx
PPTX
AULA DE HTML E CSS PARA INICIANTES EM INFORMÁTICA
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
TURMA modelo de modelo apresentação 4DE.pptx
Certificado de Conclusão Jornada Inteligência Artificial
A sua pontuação aumenta ao escolher uma categoria, preencher uma descrição lo...
Metodologias ágeis - Slides - aulas 1 a 5.pdf
Apostila_de_Laboratorio_de_Quimica_Inorg.pdf
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
Classifirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcação_IPAQ.pptx
AULA DE HTML E CSS PARA INICIANTES EM INFORMÁTICA
Anúncio

Aula9-Spark-Básico sematix com dataframes

  • 2. Quem sou eu? 2 Eu sou Rodrigo Augusto Rebouças. Engenheiro de dados da Semantix Instrutor do Semantix Mentoring Academy Você pode me encontrar em: rodrigo.augusto@semantix.com.br
  • 4. Processamento de Dados 4 o Map Reduce o Spark o Fink
  • 5. Apache Spark o Plataforma de computação em cluster • Suporte o MapReduce o Streaming o Análises interativas • Execução em memória • Compatível com Hadoop o Funciona com YARN o Acessar os dados • HDFS • Tabelas Hive • Tabelas Hbase o Linguagem: Scala, Java, Python e R 5
  • 6. Spark História o 2009 • Projeto de pesquisa na Universidade da California, Berkeley o AMPLab o 2010 • Open source o 2013 • Apache o Representação dos dados • RDD - 2011 • Dataframe - 2013 • Dataset - 2015 • Qual a melhor forma de trabalhar com dados no Spark? 6
  • 8. Spark Ferramentas o Spark • ETL e processamento em batch o Spark SQL • Consultas em dados estruturados o Spark Streaming • Processamento de stream o Spark MLib • Machine Learning o Spark GraphX • Processamento de grafos 8
  • 9. Spark Shell o Ambiente Spark interativo o Inicialização no Cluster • pyspark para Python • spark-shell para Scala o Se existir a instalação da versão 1 e 2 no cluster • Versão 1 o pyspark para Python o spark-shell para Scala • Versão 2 o pyspark2 para Python o spark2-shell para Scala 9
  • 11. DataFrame Indrodução o Representação de dados no spark o DataFrames • Dados estruturados e semiestruturados em forma tabular • Java, Scala e Python • Operações o Transformação o Ação 11
  • 13. DataFrame Leitura de arquivo o Dados suportados para leitura e escrita no DataFrame • Text files o CSV o JSON o Plain text • Binary format files o Apache Parquet (Muito utilizado) o Apache ORC • Tables o Hive metastore o JDBC • Configurar outros tipos 13
  • 14. DataFrame Leitura de arquivo 14 o val <dataframe> = spark.read.<formato>(“<arquivo>”) • <formato> o textFile(“arquivo.txt”) o csv(“arquivo.csv”) o jdbc(jdbcUrl, "bd.tabela", connectionProperties) o load ou parquet(“arquivo.parquet”) o table(“tabelaHive”) o json(“arquivo.json“) o orc(“arquivo.orc”) • <arquivo> o “diretório/” o “diretório/*.log” o “arq1.txt, arq2.txt” o “arq*”
  • 15. DataFrame Leitura de arquivo o val <dataframe> = spark.read.format("<formato>").load("<arquivo>") o Opções para configurar o arquivo de leitura • spark.read.option(...) scala> val userDF = spark.read.json(“user.json”) scala> val userDF = spark.read.format(“json”).load(“usr.json”) 15
  • 17. DataFrame Operações o Ação • count: retorna o número de linhas • first: retorna a primeira linha • take(n): retorna as primeiras n linhas como um array • show(n): exibe as primeiras n linhas da tabela • collect: Trazer toda a informação dos nós do drive o Cuidado para não estourar a memória • distincts: retorna os registros, removendo os repetidos • write: salvar os dados • printSchema() Visualizar a estrutura dos dados o DataFrame sempre tem um esquema associado
  • 18. DataFrame Exemplo ações o <dataframe>.<ação> scala> val clienteDF = spark.read.json("cliente.json") scala> clienteDF.printSchema() scala> clienteDF.count() scala> clienteDF.first() scala> clienteDF.take(5) scala> clienteDF.show(5) scala> clienteDF.distinct() scala> clienteDF.collect() //Cuidado para estourar memória
  • 19. DataFrame Salvar Dado o dadosDF.write. • save(“arquivoParquet”) • json("arquivoJson") • csv(“arquivocsv”) • saveAsTable("tableHive") o (/user/hive/warehouse) scala> dadosDF.write.save(“outputData”) $ hdfs dfs -ls /user/cloudera/outputData scala> dadosDF.write. mode("append"). option("path","/user/root"). saveAsTable("outputData")
  • 21. DataFrame Operações o Transformação • Imutáveis o Dados no DataFrame nunca são modificados • Exemplos o select: Selecionar os atributos o where: Filtrar os atributos o orderBy: Ordenar os dados por atributo o groupBy: Agrupar os dados por atributo o join: Mesclar Dados o limit(n): Limitar a quantidade de registros
  • 22. DataFrame Transformações o Transformação individual • <dataframe>.<ação> o Sequência de transformações • <dataframe>.<ação>.<ação>.<ação>.<ação> scala> val prodQtdDF = prodDF.select("nome","qtd") scala> val qtd50DF = prodQtdDF.where("qtd > 50") scala> val qtd50ordDF = qtd50DF.orderBy(“nome”) scala> qtd50ordDF.show() scala> prodDF.select("nome","qtd").where("qtd > 50").orderBy(“nome”)
  • 23. DataFrame – Transformações o Agrupar (groupBy) com uma função de agregação • count • max • min • mean • sum • pivot • agg (Funções de agregação adicional) scala> peopleDF.groupBy(“setor").count() scala> peopled.show()
  • 24. DataFrame – Transformações o Acessar o atributo do dado • “<atributo>” • $“<atributo>” • <dataframe>(“<atributo>”) scala> prodDF.select("nome","qtd").show() scala> prodDF.select($"nome", $“qtd” * 0,1).show() scala> prodDF.where(prodDF("nome").startsWith("A")).show()
  • 26. Exercícios DataFrame 26 1. Enviar o diretório local “/input/exercises-data/juros_selic” para o HDFS em “/user/aluno/<nome>/data” 2. Criar o DataFrame jurosDF para ler o arquivo no HDFS “/user/aluno/<nome>/data/juros_selic/juros_selic.json” 3. Visualizar o Schema do jurosDF 4. Mostrar os 5 primeiros registros do jutosDF 5. Contar a quantidade de registros do jurosDF 6. Criar o DataFrame jurosDF10 para filtrar apenas os registros com o campo “valor” maior que 10 7. Salvar o DataFrame jurosDF10 como tabela Hive “<nome>.tab_juros_selic” 8. Criar o DataFrame jurosHiveDF para ler a tabela “<nome>.tab_juros_selic” 9. Visualizar o Schema do jurosHiveDF 10. Mostrar os 5 primeiros registros do jurosHiveDF 11. Salvar o DataFrame jurosHiveDF no HDFS no diretório “/user/aluno/nome/data/save_juros” no formato parquet 12. Visualizar o save_juros no HDFS 13. Criar o DataFrame jurosHDFS para mostrar o “save_juros” da questão 8 14. Visualizar o Schema do jurosHDFS 15. Mostrar os 5 primeiros registros do jurosHDFS
  • 27. Obrigado! Alguma pergunta? Você pode me encontrar em: rodrigo.augusto@semantix.com.br