O que é Apache Spark?

O Apache Spark é um mecanismo de análise unificado para processamento de dados em grande escala com módulos integrados para SQL, streaming, machine learning e processamento de gráficos. O Spark pode ser executado no Apache Hadoop, Apache Mesos, Kubernetes, por conta própria, na nuvem e em diversas fontes de dados.

Quando você usa o Apache Spark em vez do Apache Hadoop? Ambos estão entre os sistemas distribuídos mais proeminentes do mercado hoje. Ambos são projetos de nível superior semelhantes do Apache que costumam ser usados juntos. O Hadoop é usado principalmente para operações com uso intenso de disco com o paradigma MapReduce. O Spark é uma arquitetura de processamento na memória mais flexível e geralmente mais cara. Compreender os recursos de cada um guiará suas decisões sobre o que implementar e quando. 

Saiba como usar o Dataproc para executar  clusters do Apache Spark, no Google Cloud, de maneira mais simples, integrada e econômica. 

Visão geral do Apache Spark

O ecossistema Spark inclui cinco componentes principais:

1. O Spark Core é um mecanismo de processamento de dados distribuído de uso geral. Além disso, há bibliotecas para SQL, processamento de stream, machine learning e computação gráfica, sendo que todas elas podem ser usadas juntas em um aplicativo. O Spark Core é a base de todo um projeto, fornecendo despacho distribuído de tarefas, programação e funcionalidades básicas de E/S.

2. Spark SQL é o módulo Spark para trabalhar com dados estruturados que oferece suporte a uma maneira comum de acessar uma variedade de fontes de dados. Ele permite consultar dados estruturados dentro de programas Spark, usando SQL ou uma API DataFrame familiar. O Spark SQL oferece suporte à sintaxe HiveQL e permite o acesso a armazenamentos existentes do Apache Hive. O modo de servidor fornece conectividade padrão por meio de conectividade de banco de dados Java ou conectividade aberta de banco de dados.

3. O Spark Streaming facilita a criação de soluções de streaming escalonáveis e tolerantes a falhas. Ele traz a API integrada à linguagem Spark para o processamento de stream, para que você possa escrever jobs de streaming da mesma forma que os jobs em lote. O Spark Streaming oferece suporte a Java, Scala e Python, e apresenta semânticas "exatamente uma vez" com estado, prontas para uso. 

4. MLlib é a biblioteca de machine learning escalonável do Spark com ferramentas que tornam a ML prática escalonável e fácil. MLlib contém muitos algoritmos de aprendizado comuns, como classificação, regressão, recomendação e clustering. Também contém fluxos de trabalho e outros utilitários, incluindo transformações de recursos, construção de pipeline de ML, avaliação de modelo, álgebra linear distribuída e estatísticas. 

5. GraphX é a API Spark para gráficos e computação paralela a gráficos. É flexível e funciona perfeitamente com gráficos e coleções. Unifica extrair, transformar, carregar, análise exploratória, e computação gráfica iterativa em um sistema. Além de uma API altamente flexível, GraphX vem com uma variedade de algoritmos de gráfico. Ela compete em desempenho com os sistemas gráficos mais rápidos, mantendo a flexibilidade, tolerância a falhas e facilidade de uso do Spark.

Quais são os benefícios do Apache Spark?

Velocidade

Você pode executar cargas de trabalho 100 vezes mais rápido do que com o Hadoop MapReduce. O Spark atinge alto desempenho para dados em lote e de streaming usando um programador gráfico acíclico direcionado de última geração, um otimizador de consulta e um mecanismo de execução físico.

Fácil de usar

O Spark oferece mais de 80 operadores de alto nível que facilitam a criação de apps paralelos. Você pode usá-lo interativamente a partir dos shells de Scala, Python, R e SQL para programar aplicativos rapidamente.

Generalidade

O Spark capacita uma pilha de bibliotecas, incluindo SQL e DataFrames, MLlib para machine learning, GraphX e Spark Streaming. É possível combinar essas bibliotecas perfeitamente no mesmo aplicativo.

Inovações do framework de código aberto

O Spark é apoiado por comunidades globais unidas pela introdução de novos conceitos e recursos de forma mais rápida e eficaz do que equipes internas que trabalham em soluções proprietárias. O poder coletivo de uma comunidade de código aberto oferece mais ideias, desenvolvimento mais rápido e solução imediata de problemas, o que possibilita um tempo de lançamento mais rápido. 

Por que escolher o Spark em vez de um mecanismo somente SQL?

O Apache Spark é um mecanismo de computação de cluster rápido de uso geral que pode ser implantado em um cluster Hadoop ou no modo independente. Com o Spark, os programadores podem escrever aplicativos rapidamente em Java, Scala, Python, R e SQL, o que o torna acessível a desenvolvedores, cientistas de dados e executivos avançados com experiência em estatística. Ao usar o Spark SQL, os usuários podem se conectar a qualquer fonte de dados e apresentá-la como tabelas a serem consumidas por clientes SQL. Além disso, algoritmos interativos de machine learning são facilmente implementados no Spark.

Com um mecanismo somente SQL como Apache Impala, Apache Hive, ou Apache Drill, os usuários só podem usar SQL ou linguagens semelhantes a SQL para consultar dados armazenados nos vários bancos de dados. Isso significa que os frameworks são menores em comparação com o Spark.

Como as empresas estão usando o Spark?

Muitas empresas estão usando o Spark para ajudar a simplificar a tarefa desafiadora e com uso intensivo de computação de processamento e análise de grandes volumes de dados em tempo real ou arquivados, tanto estruturados quanto não estruturados. O Spark também permite que os usuários integrem perfeitamente recursos complexos relevantes, como machine learning e algoritmos de gráfico.

Engenheiros de dados

Os engenheiros de dados usam o Spark para codificar e criar jobs de processamento de dados, com a opção de programar em um conjunto de idiomas expandido.

Cientistas de dados

Os cientistas de dados podem ter uma experiência mais rica com análises e ML usando o Spark com GPUs. A capacidade de processar volumes maiores de dados mais rápido com uma linguagem familiar pode ajudar a acelerar a inovação.

Dataproc é um serviço de nuvem rápido, fácil de usar e totalmente gerenciado para executar clusters Apache Spark e Apache Hadoop de uma maneira mais simples, integrada e econômica. Ele se integra totalmente a outros serviços do Google Cloud que atendem às principais necessidades de segurança, governança e suporte, permitindo que você tenha uma plataforma completa e poderosa para processamento de dados, análise e machine learning.

As ferramentas de análise de Big Data do Google Cloud, como BigQuery, AI Platform Notebooks, e Dataflow, podem permitir que você crie aplicativos ricos em contexto e novas soluções de análise e transforme dados em insights úteis.