Baixe o app para aproveitar ainda mais
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
Compartilhar