Buscar

FRAMEWORKS PARA BIG DATA - Atividade 3 - 2022

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1… 1/23
FRAMEWORK PARA BIG DATAFRAMEWORK PARA BIG DATA
ANÁLISE DE DADOSANÁLISE DE DADOS
DISTRIBUÍDOSDISTRIBUÍDOS
Autor: Esp. Daniel dos Santos Brandão
Revisor : Everton Gomede
I N I C I A R
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1… 2/23
introduçãoIntrodução
Trabalhar com dados não é uma tarefa trivial. Os pro�ssionais envolvidos neste mundo da
informação precisam se manter constantemente atualizados e pesquisando para desenvolver novas
ferramentas e técnicas que atendam às demandas de lidar com os conjuntos de dados cada vez
maiores e em mais formatos distintos. Com o aumento constante da geração de dados pela internet
e com as redes sociais, é necessário gerenciar e armazenar as informações de maneira organizada.
Nesta unidade, você verá algumas das técnicas utilizadas para lidar com dados em ambiente
distribuído com foco em Spark, com exemplo de uso através da linguagem Python e sua biblioteca
PySpark, no uso de chaves e padrões de projeto para análise de dados distribuídos. Ao �nal desta
unidade, você deverá ser capaz de compreender o funcionamento dessa ferramenta, alinhada à
linguagem Python em ambiente do ecossistema Hadoop.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1… 3/23
Com o rápido desenvolvimento de Big Data nos últimos anos, muitas aplicações precisaram ser
estendidas para grandes Clusters. Com o rápido aumento de aplicativos, a computação em cluster
requer uma solução funcional para atender diferentes cálculos.
O ambiente de clusters programáveis trouxe vários desa�os, como:
1. Muitos aplicativos precisam ser reescritos de maneira paralela e os clusters programáveis
precisam processar mais tipos de dados;
2. A tolerância a falhas dos clusters tem se tornado mais importante e difícil de ser alcançada;
3. Os clusters con�guram dinamicamente os recursos de computação entre usuários
compartilhados, o que aumenta a interferência dos aplicativos.
Para Morais (2018, p. 14) et al.,
Com o aumento signi�cativo da quantidade de dados gerados pela internet e com o
surgimento das mídias sociais, é necessário gerenciar e armazenar as informações de
maneira organizada. Esses dados podem ser classi�cados em estruturados, não
estruturados e semiestruturados com base no seu gerenciamento e armazenamento.
Com o mundo de dados cada vez mais em expansão e com dados surgindo de diversos tipos, um
tratamento adequado dos dados é requerido. Os dados surgem de todos cantos do mundo. Isso
requer uma grande capacidade de memória de armazenamento para lidar com esses dados brutos.
E mesmo com as tecnologias existentes, ainda é muito complexo processar e analisar essa enorme
quantidade de dados acumulados.
O Hadoop MapReduce é um framework que processa grandes conjuntos de dados usando duas
funções com objetivo de mapear e reduzir: Map e Reduce. A função de “mapa” recebe um conjunto
de dados e converte em outro conjunto de dados, onde cada elemento é dividido em pares de
chave-valor separados. A função Reduce coleta a saída da função Map e, considerando a saída Map
como uma entrada, combina as tuplas ou registros de dados em um conjunto menor de tuplas.
Processamento de DadosProcessamento de Dados
em Memóriaem Memória
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1… 4/23
Portanto, no MapReduce, os dados são distribuídos em um cluster e, em seguida, são processados.
Porém, MapReduce tem problemas de alta latência e tolerância a falhas, o que não é totalmente
efetivo para dados em tempo real.
Esse procedimento é de grande ajuda no processamento de uma quantidade enorme de dados. A
técnica MapReduce foi criada com o intuito de agrupar e realizar tarefa de contagem e exploração de
dados vindos de um ou vários arquivos para posteriormente disponibilizá-los em servidores de
arquivos distribuídos. A explosão de dados digitais e a crescente necessidade de análise rápida de
dados tornaram o processamento de big data na memória em sistemas de computadores cada vez
mais importante.
Em particular, o processamento grá�co em larga escala está ganhando atenção devido à sua ampla
aplicabilidade das Ciências Sociais ao aprendizado de máquina. No entanto, o desenvolvimento de
hardware escalável que pode processar e�cientemente grandes grá�cos na memória principal ainda
é um problema em aberto de uma solução de�nitiva.
Em condições ideais, sistemas de processamento de dados escaláveis podem ser realizados
construindo um sistema cujo desempenho aumenta proporcionalmente aos tamanhos de dados
que podem ser armazenados no sistema, o que é bastante desa�ador nos sistemas convencionais
devido a várias limitações de quantidade de memória de armazenamento, também chamado de
storage.
Nesta unidade vamos observar e destacar as vantagens do Apache Spark e suas principais diferenças
sobre o Hadoop MapReduce, bem como análise de dados em tempo real usando padrões de projeto
para análise de dados distribuídos.
No MapReduce, os dados são lidos no disco e o resultado é gravado no Hadoop Distributed File
System (HDFS) após uma iteração especí�ca e, em seguida, os dados são lidos no HDFS para a
próxima iteração. Alguns especialistas alegam que todo o processo MapReduce consome muito
espaço em disco e tempo de processamento. Dos esforços para superar os problemas e as
desvantagens do MapReduce, o Apache Spark foi desenvolvido. E, como veremos, Spark e MapReduce
não são concorrentes, mas ferramentas complementares nesse processo com grandes volumes de
dados.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1… 5/23
Apache Spark
O Apache Spark é um projeto de código aberto que garante consultas de menor latência, cálculos
iterativos e processamento em tempo real em dados semelhantes. Ele se concentra na análise de
dados em tempo real em ambiente Hadoop, processando e analisando dados e gerando um padrão
para obter uma visão mais nítida das estatísticas e características dos dados, o que torna o Spark
ainda mais e�ciente que simplesmente usar a técnica MapReduce. De maneira simples, podemos
de�nir Spark como uma ferramenta criada para lidar com esse tipo de imensas bases de dados, com
apoio a análises em tempo real. É uma estrutura para computação simultânea em computação
paralela para análise de dados, desenvolvida pelo Laboratório AMP da Universidade de Berkeley, na
Califórnia (EUA).
De modo geral, o Spark oferece uma boa plataforma para integrar ferramentas como Hadoop
MapReduce, Hadoop Streaming, uso da Structured Query Language (SQL, em português Linguagem de
Consulta Estruturada), técnicas de Machine Learning (aprendizagem de máquina), processamentos
reflitaRe�ita
“MapReduce e Spark são os dois frameworks mais
populares existentes atualmente para computação
em cluster e análise de dados de larga escala (Big
Data). Esses dois frameworks escondem a
complexidade existente no tratamento de dados
com relação a paralelismo entre tarefas e tolerância
à falha por meio da exposição de uma simples API
(Application Programming Interface) com
informações para os usuários. [...] Uma análise
detalhada foi conduzida para compreender como o
Spark e o MapReduce processam trabalhos em lote,
de forma iterativa e como os componentes
arquiteturais exercem seus papéis para cada um
destes tipos de trabalho.”
Os pesquisadores da IBM realizaram testes
comparativos na China e seu resultado pode ser
visto (na versão em português) no artigo publicado
pelo renomado portal InfoQ Brasil.
Fonte: Costa (2015).
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1…6/23
grá�cos e outras aplicações (APACHE, 2018). Além disso, o Spark fornece uma API consistente com
implantação uni�cada, que se torna uma solução perfeita para computação de dados no mundo do
Big Data. Como o Hadoop MapReduce é um mecanismo de execução famoso e amplamente usado
para trabalhar com o armazenamento e a análise de grandes conjuntos de dados, ambos não são
necessariamente concorrentes, mas podem ser complementares também, assim como outras
ferramentas e frameworks do ecossistema Hadoop.
O Spark usa o modelo master-slave (mestre-escravo) da computação distribuída, onde o mestre
corresponde aos nós no cluster que contém o processo Master (como o ClusterManager) e reduz o nó
no cluster que contém o processo Worker. O Master, como o controlador do cluster inteiro, �ca
responsável pela operação normal de todo o cluster. Worker é equivalente ao nó de execução cuja
função principal é receber o comando do nó principal e relatar o status do nó ao nó principal. O
executor é responsável pela execução das tarefas. O Cliente é responsável pelo usuário a enviar
aplicativos, enquanto o Driver é responsável pela implementação de toda a aplicação (BEZ, 2015). A
Figura 3.1 a seguir representa o �uxo de processos da arquitetura Spark com todos os atores citados
anteriormente:
Conforme o esquema da Figura 3.1, o Cliente é o requerente do processo, que dá início ao mesmo. O
Driver (também chamado de driver program) é a chamada aplicação principal, responsável por
gerenciar e executar os processos de�nidos pelo programa. O Cluster Manager é uma etapa que
serve como controlador quando Spark for executado em ambiente distribuído (ou seja, quase
sempre). Os Workers são as máquinas executoras das tarefas do programa principal.
praticarVamos Praticar
A arquitetura Spark utiliza diferentes elementos para separar a execução de todo o framework em um
processo de input (entrada), processamento e output (saída) de dados. A partir da sua subdivisão desta
estrutura, as etapas Cliente, Driver, ClusterManager, Worker e Execução compõem o �uxo de trabalho da
arquitetura Spark. Assinale a alternativa que apresenta corretamente a descrição de uma das etapas.
Figura 3.1 - A arquitetura Spark 
Fonte: Elaborado pelo autor.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1… 7/23
a) Cliente é a etapa onde a conexão é feita com bancos de dados externos.
b) ClusterManager é a chamada da aplicação principal.
c) Worker é a etapa onde máquinas executam as várias tarefas do programa principal.
d) Executor é a etapa na qual os workers são chamados para executar tarefas.
e) Driver é o requerente do processo que dá início ao mesmo.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1… 8/23
Spark como um framework possui outros serviços incluídos sob sua alçada. Além das ferramentas já
existentes no ecossistema Hadoop, como MapReduce e Streaming, o Spark possui outros
componentes que complementam seus serviços. O Quadro 3.1 a seguir apresenta cada um deles e
sua descrição: 
Quadro 3.1 – Componentes do Apache Spark 
Fonte: Elaborado pelo autor.
Os quatro componentes apresentados no Quadro 3.1 formam o framework Spark. Cada um deles
tem uma função bem especí�ca na qual, em conjunto, conseguem completar o serviço Spark de
tornar o processamento de dados em tempo real. Com o Spark SQL, é possível utilizar uma
linguagem muito parecida com a linguagem SQL para consultar dados estruturados nos programas
Spark, usando SQL ou uma API DataFrame familiar, podendo utilizar em linguagens como Java, Scala,
  Python e R (APACHE SPARK, 2018). As informações a seguir apresentam um exemplo de uso de
SparQL:
Apache SparkApache Spark
FrameworkFramework
Componente Descrição
SparQL
Responsável pela realização de consultas SQL para dados
estruturados e bancos de dados relacionais dentro do Spark.
GraphX É a API do Apache Spark para grá�cos em computação paralela.
Spark Streaming Ferramenta responsável pela execução em tempo real.
MLlib
Biblioteca de Aprendizagem de Máquina (Machine Learning) que
possui vários algoritmos para diversos �ns.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_1… 9/23
resultado = spark.sql( 
"SELECT * FROM pessoas") 
nomes = resultado.map(lambda p: p.nome) 
Quadro 3.2 – Listagem - Exemplo de uso da linguagem SparQL 
Fonte: Elaborado pelo autor.
O GraphX uni�ca o processo de ETL (Extract, Transform and Load ou Extração, Transformação e Carga
em português), inclui análise exploratória e computação interativa de grá�cos em um único sistema.
Com ele, é possível visualizar os mesmos dados que os grá�cos e as coleções, transformar e unir
grá�cos com RDDs (Resilient Distributed Datasets ou Conjuntos de dados distribuídos resilientes) com
e�ciência, ao mesmo tempo que permite escrever algoritmos de grá�cos interativos personalizados
usando a API Pregel.
O MLlib se encaixa nas APIs do Spark e se conecta a bibliotecas como o NumPy no Python (a partir do
Spark 0.9) e nas bibliotecas da linguagem R (a partir do Spark 1.5). Ela permite que você utilize
qualquer fonte de dados do Hadoop (como por exemplo, arquivos HDFS, HBase ou de uma máquina
local), o que facilita a conexão aos �uxos de trabalho do Hadoop.
Já o Spark Streaming traz a API integrada à linguagem do Apache Spark para transmitir o
processamento, permitindo que você escreva jobs de streaming da mesma maneira que escreve jobs
em lote. Ele tem suporte às linguagens Java, Scala e Python.
Outra grande vantagem do Spark é a possibilidade de você poder executá-lo usando seu modo de
cluster independente, em outras estruturas como EC2, Hadoop YARN, Mesos ou no Kubernetes. Possui
também acesso facilitado a dados no HDFS, Alluxio, Apache Cassandra, Apache HBase, Apache Hive e
centenas de outras fontes de dados.
praticarVamos Praticar
O Apache Spark é um sistema de computação em cluster rápido e de uso geral. Ele fornece APIs de alto nível
em Java, Scala, Python e R, e um mecanismo otimizado que suporta grá�cos de execução geral. Ele também
suporta um rico conjunto de ferramentas de nível superior.
Sobre as ferramentas a que o texto acima se refere, está correto o que se a�rma em:
a) MLlib é responsável pela geração de gráficos e painéis visuais de dados.
b) SparQL é uma linguagem ou forma de consultar dados estruturados em bancos relacionais.
c) Numpy é uma ferramenta incorporada ao Spark que gera consultas em bancos de dados.
d) R e Python são as únicas linguagens que dão suporte a consultas SparQL.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 10/23
e) GraphX e Spark Streaming funcionam com o mesmo objetivo, mas cada uma serve para uma linguagem de programação
diferente.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 11/23
Para trabalhar com Spark é necessário escolher uma linguagem de programação que tenha suporte
para a ferramenta. Atualmente, de acordo com a documentação o�cial Apache Spark, as linguagens
que dão suporte para ela são Java, Scala, R e Python. Para nosso exemplo, vamos utilizar a
linguagem Python que, como já citado anteriormente, é uma linguagem em alta no âmbito de
desenvolvimento web e para aplicações voltada ao mundo dos dados. Com uma ampla gama de
ferramentas e bibliotecas que dão suporte a praticar ciência de dados, Python acaba por ser de fácil
utilização e de curva de aprendizagem relativamente menor que outras concorrentes.
Para que o exemplo a seguir seja bem executado, o ambiente da linguagem Python precisa estar
instalado e con�gurado. O arquivo de instalação do ambiente Python pode ser baixado
gratuitamente a partir do site o�cial Python.org.
A instalaçãodo ambiente da linguagem é simples, uma vez que o arquivo de instalação tiver sido
baixado, basta seguir o modelo “next-next-�nish”. Ao clicar no arquivo instalador no sistema
Windows, basta clicar em “Install” e o processo será iniciado (conforme Figura 3.2): 
O processo pode demorar alguns minutos para iniciar, mas você será informado do andamento,
conforme a barra de status de instalação foi evoluindo.
Processamento de DadosProcessamento de Dados
em Memória comem Memória com
PySparkPySpark
Figura 3.2– Iniciando instalação do Python no SO Windows 
Fonte: Elaborada pelo autor.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 12/23
Após a instalação, uma mensagem con�rmando que foi bem-sucedida. Para concluir, basta clicar em
“Close”.
Apesar de poder ser instalado em seu próprio computador, é possível utilizar para testes ambientes
em nuvem já con�gurados para executar scripts em Python com suas principais bibliotecas online
Figura 3.4 – Instalação do Python concluída no Windows 
Fonte: Elaborada pelo autor.
saiba maisSaiba mais
Como você pôde ver, a instalação da linguagem Python é
simples. Você pode utilizar qualquer sistema operacional
dos mais populares como Windows e Mac OS (o sistema
Linux já possui Python instalado por padrão). A seguir
seguem tutoriais onde você pode aprender como instalar o
Python versão 3 em seu sistema operacional favorito (de
acordo com a documentação o�cial da linguagem, em
português):
WI N D OWS
M A C O S
https://python.org.br/instalacao-windows/
https://python.org.br/instalacao-mac/
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 13/23
(sem a necessidade de instalações e con�gurações). O exemplo a seguir será baseado no uso da
biblioteca PySpark para análise de dados �nanceiros de consumo de clientes por cartão de crédito.
Utilizando a biblioteca PySpark
Para exempli�cação do uso do framework Spark será apresentada a biblioteca PySpark. O exemplo
utilizado terá como base ambiente devidamente preparado na linguagem Python com a importação
da biblioteca PySpark. Além do Python, uma IDE (aplicação de desenvolvimento e programação)
precisará ser utilizada. Como sugestão, para Python, existem diversas como Brackets, Sublime,
PyCharm, entre outras (todas com versões gratuitas).
Em um novo projeto em Python, num arquivo novo, a importação poderá ser feita utilizando o
seguinte código:
import pyspark 
from pyspark.sql.types import * 
from pyspark.sql import Row 
import pyspark.sql.functions as func 
from pyspark.sql import SparkSession 
from pyspark.sql.functions import unix_timestamp 
from pyspark.sql.functions import from_unixtime 
from pyspark.sql.functions import year, month, dayofmonth, hour, minute, 
oncat_ws, date_format 
Quadro 3.3 - Listagem - Importando a biblioteca PySpark 
Fonte: Elaborado pelo autor.
A importação mostrada representa (na primeira linha) de onde virão as classes e métodos utilizados
no exemplo. Com os comandos “pyspark.sql.*” (onde o * representa algum elemento dentro do
pacote pyspark.sql) no exemplo importa as funções (functions) da biblioteca PySpark. Elas são
capazes de retornar dados como data (ano, mês, dia), hora e minuto, concatenando tudo isso em
uma variável.
Importando dados com PySPark
Com a biblioteca em funcionamento, é possível importar arquivos para que os dados sejam
recebidos e processados. Caso esteja usando dados reais ou em seu computador, você deverá
declarar o caminho inteiro do arquivo e seu nome. Mas também é possível importar um arquivo que
esteja em algum lugar na internet, também escrevendo seu caminho absoluto e nome completo. A
seguir será apresentada uma forma de importação de dados em formato CSV.
%sh wget https://meudrive/pasta/dataset.csv 
df = spark.read.option("sep",",") .option("header","true")
.option("inferSchema","true").csv("file:/pyspark/driver/dataset.csv") 
Quadro 3.4 - Listagem - Importando aqui em formato CSV 
Fonte: Elaborado pelo autor.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 14/23
Nesse exemplo, a primeira linha faz referência a URL completa de onde estaria o arquivo a ser
importado, onde “dataset.csv” é o nome do arquivo com os dados a serem processados e
analisados, estando em formato .csv (dados separados por vírgula). Todo o restante está em um
único comando, dentro da variável “df”, sendo importados com cabeçalho (header) para dentro do
diretório chamado “driver”, dentro de outro diretório chamado “pyspark”.
Removendo colunas de dados
Após isso, alguns primeiros comandos podem ser executados. Por exemplo, para eliminar dados
que não precisarão ser utilizados, o comando “remove” pode ser executado da seguinte maneira:
removeNegativedf = removeAllna.where("Quantity>0")
display(removeNegativedf) 
Quadro 3.5 – Listagem - Utilizando comando removeAllna 
Fonte: Elaborado pelo autor.
No exemplo, “removeNegativedf” é o nome dado a uma consulta que retorna um Dataframe, forma
como os dados são segmentados em formato de tabela no PySpark. O comando “removeAllna” é
uma função que remove dados que estejam dentro de uma condição. O comando “where” é um
condicional (muito utilizado na linguagem de consultas SQL) que, no exemplo, executará a remoção
de registros que não tenham o campo ou variável chamado “Quantity” maior do que zero, ou seja,
negativo.
Adicionando colunas de dados
É possível também adicionar colunas em nossos dados. No exemplo, será criada uma coluna que
represente o valor gasto para cada registro encontrado nos dados do arquivo CSV analisado.
removeNegativedf = removeNegativedf.withColumn('amount_spent',
func.round(removeNegativedf.Quantity * removeNegativedf.UnitPrice, 2)) 
Quadro 3.6 – Listagem - Utilizando comando removeAllna 
Fonte: Elaborado pelo autor.
O comando “removeNegativedt” da variável de mesmo nome faz um cálculo, no caso uma
multiplicação, entre o valor de “Quantity” (quantidade) em valor e “UnitPrice” (preço unitário) gasto.
Isso é apenas um exemplo, logo, seguindo essa mesma estrutura, novas colunas de dados podem
ser criadas para diversos �ns, realizando cálculos com retornos variados.
Realizando consultas personalizadas
Para realizar consultas no PySpark existem comandos próprios para esse �m também. As Queries
são, de certo modo, semelhantes às apresentadas pela linguagem SQL, por exemplo.
removeNegativedf.groupBy('ClienteID').count().sort('count', ascending =
0).show(5) 
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 15/23
Quadro 3.7 – Listagem - Realizando consulta com PySpark 
Fonte: Elaborado pelo Autor (2019).
O comando da listagem utiliza a função “groupBy” para agrupar o retorno pelo ID do cliente. A função
“count” realiza a contagem de quantos retornos por cliente foi achado na consulta. A função “sort”
ordena os resultados pelo total contado, no caso do maior para o menor. Por último, a função
“show” com 5 entre parêntesis, retorna apenas cinco registros do que foi consultado.
Outro exemplo seria obter o retorno da média de gastos por cliente em cada país de origem dos
clientes. Para obter esse retorno, a consulta é semelhante à anterior, porém, deverá ser utilizada a
função “avg” para cálculo da média, conforme a Listagem:
removeNegativedf.groupby("Country").agg(func.avg("amount_spent").alias("total
spent")).sort("total spent", ascending=0).show() 
Quadro 3.8 – Listagem - Realizando consulta com cálculo de média com PySpark 
Fonte: Elaborado pelo autor.
No exemplo é aplicado novamente as funções “groupby” para consultar por país (country), a função
“agg” e “avg” para cálculo da média por país, ordenando do maior para o menor, de acordo com o
total calculado.
praticarVamos Praticar
Utilizando a biblioteca PySpark é possívelrealizar consultas em grandes volumes de dados. Entre as
consultas e operações possíveis, a biblioteca da linguagem Python apresenta comandos e funções que
retornam o resultado desejado por quem as programa.
Em Python, a função que tem por objetivo retornar um total de valores, corresponde à alternativa:
a) Sort().
b) Show().
c) Control().
d) Count().
e) Return().
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 16/23
Com a utilização de bibliotecas e do framework Spark, obter retorno em formato grá�co não é tão
complicado. Preparado para dar como resposta dos dados consultados de maneira prática, o uso
das tarefas do framework Spark tem auxílio preciso nessa obtenção de resultados.
Sendo um framework para lidar com enormes conjuntos de dados, um arquivo ou conjunto de
arquivos com mais de dez ou cem mil linhas, até pilhas gigantes de dados com mais de um milhão
de linhas, pode dar um retorno resumido por meio do uso de bibliotecas que gerem grá�cos, por
exemplo.
Também é comum na visualização de dados o uso de outros elementos como tabelas, esquemas,
entretanto, os grá�cos se apresentam como elementos visuais dos mais poderosos na
demonstração de resumo de dados para relatórios �nais. A visualização de dados tem íntima ligação
com o apoio a tomada de decisão. A�nal, um gestor ou pessoa em função elevada que precise tomar
decisões muito importantes precisa de sistemas que o apoie com dados reais e precisos e, se
possível, em tempo real. “A tomada de decisão orientada por dados (DOD) refere-se à prática de
basear as decisões na análise dos dados, em vez de apenas na intuição” (MORAIS et al., 2018, p. 18).
Análise de dados distribuídas com Spark
O Apache Spark pode auxiliar no processo de visualização de dados através do uso da linguagem
Python. Através do uso de Dataframes do Spark, onde os dados são segmentados de acordo com seu
tipo, uma tabela é apresentada sendo o resultado do uso de uma função simples da biblioteca
PySpark, que obterá como retorno uma consulta de dados em um dado CSV, conforme a Listagem
abaixo:
from pyspark.sql.functions import avg
removeNegativedf = spark.read.csv("http://meudrive/pasta/dataset.csv",
header="true", inferSchema="true")
display(removeNegativedf.select("ClienteID","price").groupBy("color").agg(avg("price"
Análise de DadosAnálise de Dados
DistribuídasDistribuídas
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 17/23
Quadro 3.9 - Listagem - Realizando consulta com cálculo de média com PySpark 
Fonte: Elaborado pelo autor.
Com esse script, é possível realizar uma consulta com a média de preços (price) de valores do nosso
conjunto de dados no arquivo “dataset.csv”. O resultado dessa consulta é apresentado como a �gura
a seguir:
O resultado apresentado na Figura 3.5 é um dataframe que apresenta os atributos selecionados no
código da Listagem anterior, com ClienteID e Price (preço). Para apresentar resultados em formato
de grá�co, o uso de uma função de plotagem de dados é requerido. Para apresentar um resultado
em formato de grá�co, o uso da biblioteca PySpark através da função display deve ser usado
novamente. Porém, agora com a importação da classe “Vectors” junto ao pacote da biblioteca de
Machine Learning (ML) da MLlib do Spark. O seguinte código será utilizado:
from pyspark.ml.linalg import Vectors, VectorUDT 
removeNegativedf = spark.read.csv http://meudrive/pasta/dataset.csv ",
header="true", inferSchema="true")
display(removeNegativedf.groupBy("ClientID").avg("price").orderBy("color")) 
Quadro 3.10 - Listagem – Consulta com importação da classe Vectors 
Fonte: Elaborado pelo autor.
Como resultado da consulta apresentada, teremos um grá�co sugerido pela própria plataforma, de
acordo com os tipos de dados apresentados no dataframe consultado. O resultado da consulta está
apresentado na Figura 3.6 a seguir:
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 18/23
O resultado apresentado na Figura 3.6 representa um cruzamento de dados, baseado no preço ou
valor gasto por cliente, diferenciando-os por categorização, onde cada cliente representa uma
classe. Como o PySpark utiliza a biblioteca de Aprendizagem de Máquina (Machine Learning) no
processo, algoritmos com certa inteligência arti�cial são empregadas para realizar a operação,
dando como resultado um consolidado dos dados.
Essas ferramentas facilitam a vida do analista de dados, pois é possível extrair informação dos dados
disponíveis em uma massa de dados, agilizando os trabalhos de um pro�ssional de dados que
precisa disponibilizar informação para que gestores e tomadores de decisão tomem as melhores
decisões baseadas em dados corretos e o mais tempo real possível.
praticarVamos Praticar
O Apache Spark é uma estrutura de processamento paralelo que dá suporte ao processamento na memória
para melhorar o desempenho de aplicativos de análise de Big Data. Originalmente, foi criado na linguagem
Scala, mas permite o acesso por API para outras linguagens como Python, Java, R e até SQL. Na prática,
independente da forma que as instruções forem escritas, o plano de execução das tarefas pelos Worker
Nodes será o mesmo.
MICROSOFT AZURE. O que é o Apache Spark no Azure HDInsight. Microsoft. 30 set. 2019. Disponível em:
https://docs.microsoft.com/pt-br/azure/hdinsight/spark/apache-spark-overview. Acesso em: 25 dez. 2019.
De acordo com detalhes sobre o Spark e sobre o que foi visto nesta unidade, assinale a alternativa correta
sobre o uso de consultas e visualizações de dados com esta ferramenta:
a) Dataframe é um retorno obtido de uma consulta a dados via Spark.
b) Spark foi escrito em Java, mas permite outras linguagens de programação.
c) PySpark é uma biblioteca de interação com Spark para as linguagens R e Python.
d) Spark auxilia a tomada de decisão orientada a dados, que é a decisão com uso exclusivo de gráficos.
e) Dataset e Dataframe são sinônimos, tendo por significado os dados brutos antes da análise.
Figura 3.6 – Grá�co como resultado da consulta no PySpark 
Fonte: Elaborada pelo autor.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 19/23
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 20/23
indicações
Material
Complementar
FILME
O jogo da imitação
Ano: 2015
 Comentário: O �lme se passa durante a Segunda Guerra Mundial e
conta a história de Allan Turing e sua equipe na luta para criar
mecanismos para decifrar códigos secretos nazistas. Baseado em fatos
reais, o �lme conta a história do surgimento do computador, visto que a
“máquina de Turing” é considerada a precursora do computador como
conhecemos hoje.
Para conhecer mais sobre o �lme, acesse o trailer disponível.
T R A I L E R
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 21/23
LIVRO
Big Data – Técnicas e Tecnologias para Extração de Valor
dos Dados
Rosangela Marquesone
Editora: Casa do Código
ISBN: 978-85-5519-231-9
Comentário: O livro trata de todos os conceitos por trás de Big Data.
Partindo dos princípios dos grandes volumes de dados as ferramentas,
tecnologias e evolução do tratamento desses dados, na busca pela
obtenção de valor nos dados e na geração de informações �dedignas.
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 22/23
conclusão
Conclusão
Ao término desta unidade, você pode ver que o uso da ferramenta Spark e todo seu conjunto de
técnicas e tecnologias é um grande auxílio na obtenção de valor nos dados armazenados em
grandesconjuntos de dados, o que chamamos de Big Data. Você viu também que, a partir do uso de
bibliotecas como a PySpark, voltada para a linguagem Python, diversas operações são facilitadas,
como consultas de variados tipos, a inclusão e exclusão de colunas e segmentos de dados em
datasets; a geração de dataframes e a visualização através de grá�cos e outros elementos visuais
auxiliando no processo de tomada de decisão baseada em dados. Com essas novas informações,
você é capaz de explorar dados de variados tipos e gerar relatórios e visualizações de dados mais
e�cazes para apoio a importantes tomadas de decisão.
referências
Referências
Bibliográ�cas
APACHE SPARK. Lightning-fast uni�ed analytics engine. Apache Spark. 2018. Disponível em:
http://spark.apache.org/. Acesso em: 22 dez. 2019.
BEZ, J. L. Plataformas de Big Data: Spark, Storm e Flink. 2015. Disponível em:
https://www.researchgate.net/publication/280052790_Plataformas_de_Big_Data_Spark_Storm_e_Flink.
Acesso em: 23 dez. 2019.
COSTA, M. Um comparativo entre MapReduce e Spark para análise de Big Data. INFOQ Brasil. 9 nov.
2015. Disponível em: https://www.infoq.com/br/articles/mapreduce-vs-spark/. Acesso em: 27 jan.
2020.
IBM. Analisar e visualizar dados abertos com o Apache Spark. 2019. Disponível em:
https://cloud.ibm.com/docs/tutorials?topic=solution-tutorials-big-data-analytics-spark&locale=pt-br.
Acesso em: 23 dez. 2019.
MORAIS, I. S. et al. Introdução a Big Data e Internet das Coisas (IoT). Porto Alegre: Sagah, 2018.
http://spark.apache.org/
https://www.researchgate.net/publication/280052790_Plataformas_de_Big_Data_Spark_Storm_e_Flink
https://www.infoq.com/br/articles/mapreduce-vs-spark/
https://cloud.ibm.com/docs/tutorials?topic=solution-tutorials-big-data-analytics-spark&locale=pt-br
15/04/2021 Ead.br
https://uniritter.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_669888_… 23/23

Continue navegando