Apache Spark: Uma breve introdução
Se você trabalha ou pretende trabalhar com Big Data é possível que você já conheça o Spark ou pelo menos já tenha ouvido falar sobre. Independente de qual o seu caso, neste artigo vamos explicar do que se trata Spark, como ele funciona e descobrir se ele pode te ajudar!
Sumário
História do Apache Spark
Lidar com grande volume de dados costumava ser uma tarefa praticamente impossível a pouco mais de uma década. Isso ocorria em função de que não tínhamos tanto poder computacional e plataformas de processamento paralelo ainda não eram realidades. Entretanto, com a criação do Hadoop surgiu uma ferramenta que resolvia os 3 grandes problemas da computação paralela sendo:
- A paralelização (como performar subsets simultaneamente)
- Distribuição (como distribuir os dados)
- E tolerância a falha (como lidar falha de componente)
A Apache Software Foundation assumiu a primeira versão do Spark lançada pela AmpLab em 2009, após o Hadoop ter dominado o mercado de Big Data por algum tempo. No entanto, o Hadoop enfrentou vários problemas que não puderam ser resolvidos. Como resultado, várias ferramentas foram criadas com base nele, mas sem um padrão, o que tornou sua utilização difícil.
Segundo o criador do Spark, Matei Zaharia, podemos defini-lo como uma ferramenta computação paralela que generaliza o modelo de programação do Map-Reduce, aproveitando assim todos as vantagens já implementadas pelo Hadoop e desenvolvendo melhorias como veremos a seguir.
Arquitetura básica do Spark
Podemos entender o Spark como uma evolução do Hadoop e do paradigma de programação Map-Reduce. Ele pode ser de 10 a 100 vezes mais rápido graças ao seu uso eficiente da memória que não persiste os dados em discos enquanto está realizando seu processamento.
O Spark atualmente é criado em Scala rodando sobre JVM — Java Virtual Machine. Contudo, podemos usar 5 linguagens para desenvolver: Scala, Java, SQL, Python, R.
Além disso, ao ser desenvolvido, uma grande preocupação foi a criação de uma API que conseguisse gerenciar todo o paralelismo. O objetivo é que o desenvolver final possa ter a impressão de estar trabalhando apenas com um computador e pudesse de fato focar esforços em suas tarefas seja de transformação, analise ou ainda outras.
É possível ter uma ideia de como o Spark está organizado pelo seguinte diagrama, por exemplo:
Low Level API’s
Este nível contém as funcionalidades básicas para rodar jobs e outras funcionalidades requeridas pelos demais componentes. É nela também que definimos o conceito de RDD — Resilient distributed dataset, uma abstração da coleção de dados distribuída.
Outras funções importantes desta camada são o gerenciamento de segurança, rede, agendamento e ainda o acesso logico a sistemas de arquivos HDFS, GlusterFS, Amz S3 e demais.
Structured API’s
Já o nível de Structured API trabalha a manipulação dos dados seja por meio dos DataSets ou dos DataFrames. Eles podem ser lidos de diversos formatos como Hive, Parquet, JSON e outros ainda. A diferença entre os dois -DataSets e DataFrames- está na tipagem que será pré-definida e checada no caso dos DataSets, enquanto no DataFrame somente haverá uma checagem entre as linhas. Utilizando o SparkSQL (API que nos permite escrever querys em SQL), podemos manipular os dados da forma como desejamos. Além disso, com a ajuda do Catalyst possuímos um otimizador de query trazendo mais eficácia.
High Level
No nível mais alto, temos o ecossistema Spark com suas diversas bibliotecas incluído Spark Streaming, Spark MLlib e Spark GraphX. São responsáveis respectivamente por cuidar de ingestão em streaming (seja por HDFS, Kafka…) e os processos ao redor como recuperação de falhas; criar e validar modelos clássicos de machine learning; e por último lidar com grafos e seus algoritmos.
Pra quem é o Spark?
Graças ao seu suporte para 5 linguagens de desenvolvimento a utilização do Spark pode ser de fácil adoção por todo o time de dados. Vejamos com mais detalhes:
- Engenheiro de Dados: Poderá utilizar o Spark para o processo de extração, transformação e carga dos dados (ETL/ELT/EL), sendo que os processos podem ser em batch ou streaming;
- Cientistas de Dados: Através de bibliotecas como SparkML ou Spark GraphX o profissional poderá aplicar modelos de ML e lidar com problemas de grafos;
- Analistas de Dados: Poderá gerar relatórios e insights sobre o volume de dados de forma otimizada graças ao Catalyst.
Com o uso combinado entre Spark e Databricks, o desenvolvimento de programas fica ainda mais simples podendo ainda ser integrado com grandes serviços de nuvem como Azure, AWS e GCP.
Quer descobrir se o Spark pode ser útil para você? Então fale com a DTI. Estamos abertos a tirar dúvidas e criar uma solução que gere valor ao seu negócio! Além disso, podemos mostrar como o agilismo e a transformação digital pode facilitar processos dentro da sua empresa!
No podcast Os Agilistas você confere de perto a percepção DTI sobre o agilismo e como aplicá-lo de maneira eficiente em uma equipe. Te esperamos lá! E se você tem interesse em fazer parte de um time que entende de cultura ágil e te dá a oportunidade de trabalhar com Spark, na prática, se inscreva em nossa página de carreiras e venha ser DTI!
Por: Vitor Oliveira dos Santos
Data Science
Confira outros artigos
![](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2022%2F04%2FCiencia-de-dados-nos-Negocios.png&w=1024&q=75)
Ciência de dados explicando coisas que acontecem no mundo
Hoje cada ser humano com um dispositivo móvel em mãos produz uma série de dados, gerados em velocidade, volume e variedade nunca vistos antes. A internet das coisas tem se tornado um mar de oportunidades para a ciência de dados nos últimos anos. Isso acontece, porque, através de sensores inteligentes e softwares que transmitem dados […]
Data Science
![Dados geoespaciais](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2022%2F10%2FDados-geoespaciais.jpg&w=1024&q=75)
Dados Geoespaciais: Uma visão geral
Dentre todas as bases de dados em que tive a oportunidade de trabalhar, poucas foram as vezes em que não encontrei dados geoespaciais. Sumário0.1 Mas o que são dados geoespaciais?1 Conceitos Básicos dos dados1.1 Como representar os dados2 Operações Geoespaciais2.1 Operações de relacionamento3 Visualização4 Aplicações de dados georreferenciados4.1 Dados georreferenciais e a pandemia5 Referências e […]
Data Science
![Estrutura de dados o que é e qual a sua importância](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2022%2F10%2FEstrutura-de-dados-o-que-e-e-qual-a-sua-importancia.jpg&w=1024&q=75)
Estrutura de dados: o que é e qual a sua importância?
Entenda o que é a importância da estrutura de dados na linguagem da programação O universo da programação possui uma série de fundamentos considerados essenciais para o desenvolvimento dos mais diversos softwares. Considerada um ponto-chave em qualquer projeto, a estrutura de dados tem um papel relevante no trabalho de todos os programadores. Mas você sabe […]
Data Science