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, Kubernetes, por conta própria, na nuvem e em diversas fontes de dados. Ele oferece APIs avançadas em Java, Scala, Python e R, o que o torna acessível a uma ampla gama de desenvolvedores e cientistas de dados. A API Python, PySpark, também se integra bem com bibliotecas conhecidas, como o Pandas, para manipulação de dados. No Google Cloud, o Apache Spark chega a um novo patamar, com opções sem servidor, melhorias de desempenho inovadoras, como o Lightning Engine (em pré-lançamento), e integrações profundas em uma plataforma unificada de dados e IA.

Uma dúvida comum é quando usar o Apache Spark no lugar 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 ambos guiará suas decisões sobre quando implementar cada um.

Saiba como o Google Cloud permite executar cargas de trabalho do Apache Spark de modo mais simples, integrado e econômico. É possível usar o Google Cloud Serverless para Apache Spark para desenvolvimento de operação zero ou o Dataproc para clusters gerenciados do Spark.

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. É o mecanismo de execução fundamental, que gerencia a distribuição descentralizada de tarefas, a programação e a E/S básica. O Spark Core implementou o conceito de conjuntos de dados distribuídos resilientes (RDDs, na sigla em inglês), coleções distribuídas imutáveis de objetos que podem ser processados em paralelo com tolerância a falhas. Além disso, há bibliotecas para SQL, processamento de stream, machine learning e computação gráfica, sendo possível usar todas elas juntas em um aplicativo.
  2. O Spark SQL é o módulo do Spark para trabalhar com dados estruturados e implementou DataFrames, que fornecem uma API mais otimizada e fácil de usar para desenvolvedores em comparação com RDDs para manipulação de dados estruturados. Ele permite consultar dados estruturados dentro de programas Spark, usando SQL ou uma API DataFrame familiar. O Spark SQL aceita a sintaxe HiveQL e permite o acesso a armazenamentos existentes do Apache Hive. O Google Cloud acelera ainda mais o desempenho de jobs Spark, especialmente para SQL e operações de DataFrame, com inovações como o Lightning Engine, que oferece aumentos significativos na velocidade das consultas e tarefas de processamento de dados ao executar o Spark no Google Cloud.
  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 usando DStreams ou a nova API Structured Streaming criada com base em DataFrames. O Spark Streaming é compatível com 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. Quando combinados com a Vertex AI do Google Cloud, é possível integrar totalmente os fluxos de trabalho do Spark MLlib aos pipelines de MLOps e melhorar o desenvolvimento com o Gemini para programação e solução de problemas.
  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 detalhada e computação gráfica iterativa em um único sistema.

Com esses componentes, o Google Cloud oferece um ambiente otimizado. Por exemplo, o Lightning Engine aumenta o desempenho do Spark e do DataFrame, enquanto o Google Cloud Serverless para Apache Spark simplifica a implantação e o gerenciamento e o Gemini aumenta a produtividade dos desenvolvedores em ambientes de notebook como o BigQuery Studio e o Vertex AI Workbench.

Como o Apache Spark funciona

A eficiência do Apache Spark se deve a alguns princípios básicos de arquitetura:

  • Processamento na memória: o Spark carrega dados na memória, acelerando significativamente algoritmos iterativos e consultas interativas em comparação com sistemas baseados em disco.
  • Execução distribuída: ele opera em um cluster de máquinas. Um programa de driver coordena executores (processos de worker) que executam tarefas em paralelo em diferentes partições de dados.
  • RDDs e DataFrames: os conjuntos de dados distribuídos resilientes (RDDs, na sigla em inglês) são a abstração básica de dados tolerante a falhas. Os DataFrames, criados com base em RDDs, fornecem uma API mais avançada e baseada em esquemas para dados estruturados, permitindo otimizações com o otimizador Catalyst.
  • Avaliação lenta e DAGs: o Spark cria um gráfico acíclico dirigido (DAG) de operações. As transformações são "lentas" (não são computadas imediatamente), permitindo que o Spark otimize todo o fluxo de trabalho antes que uma "ação" acione a execução.

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

Velocidade

O processamento na memória e o programador de DAG do Spark permitem cargas de trabalho mais rápidas do que o Hadoop MapReduce, especialmente para tarefas iterativas. O Google Cloud aumenta essa velocidade com uma infraestrutura otimizada e o Lightning Engine.

Facilidade de usar

Os operadores de alto nível do Spark simplificam a criação de aplicativos paralelos. O uso interativo com Scala, Python, R e SQL permite um desenvolvimento rápido. O Google Cloud oferece opções sem servidor e notebooks integrados com o Gemini para facilitar o uso.



Escalonabilidade

O Spark oferece escalonabilidade horizontal, processando grandes quantidades de dados ao distribuir o trabalho entre os nós do cluster. O Google Cloud simplifica o escalonamento com o escalonamento automático sem servidor e os clusters flexíveis do Dataproc.

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 usa o potencial das comunidades de código aberto para inovar e resolver problemas com rapidez, o que resulta em um desenvolvimento e tempo de lançamento mais rápidos. O Google Cloud adota esse espírito aberto, oferecendo o Apache Spark padrão com recursos aprimorados.

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 o Apache Impala, Apache Hive, ou Apache Drill, os usuários só podem usar SQL ou linguagens semelhantes a SQL para consultar dados armazenados em vários bancos de dados. Isso significa que os frameworks são menores em comparação com o Spark. Entretanto, no Google Cloud, você não precisa fazer uma escolha restrita. O BigQuery oferece recursos avançados de SQL. Com o Google Cloud Serverless para Apache Spark e o Dataproc para um serviço gerenciado do Spark e do Hadoop, você conta com a versatilidade do Spark, muitas vezes nos mesmos dados via BigLake Metastore e formatos abertos.

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. As aplicações comuns incluem:

  • ETL/ELT em grande escala
  • Processamento de dados em tempo real
  • Machine learning
  • análise de dados interativa
  • Análise de gráficos

Engenheiros de dados

Os engenheiros de dados usam o Spark para programar e criar jobs de processamento de dados, com a opção de programar em um amplo conjunto de linguagens. No Google Cloud, os engenheiros de dados podem usar o Google Cloud Serverless para Apache Spark em pipelines ETL/ELT de operação zero ou o Dataproc para controle de cluster gerenciado, tudo integrado com serviços como o BigQuery e o Dataplex Universal Catalog para governança.

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. O Google Cloud oferece suporte robusto de GPU para o Spark e integração total com a Vertex AI, permitindo que cientistas de dados criem e implantem modelos com mais rapidez. Eles podem usar vários ambientes de notebook, como o BigQuery Studio e o Vertex AI Workbench, ou conectar os ambientes de desenvolvimento integrado de sua preferência, como o Jupyter e o VS Code. Essa experiência de desenvolvimento flexível, combinada com o Gemini, ajuda a acelerar o fluxo de trabalho desde a análise inicial até a implantação na produção.

Como executar o Apache Spark no Google Cloud

Otimize sua experiência com o Spark usando o Google Cloud

  • Google Cloud Serverless para Apache Spark: para uma experiência de operação zero, execute seus jobs do Spark sem gerenciar clusters. Aproveite a inicialização quase instantânea, o escalonamento automático e o aumento de desempenho do Lightning Engine e do Gemini. Ideal para ETL, ciência de dados e análises interativas, especialmente quando integrado ao BigQuery
  • Dataproc: quando você precisa de mais controle sobre o ambiente do cluster ou de componentes específicos do ecossistema do Hadoop com o Spark, o Dataproc oferece um serviço totalmente gerenciado. O Dataproc simplifica a criação e o gerenciamento de clusters e também aproveita as melhorias do Lightning Engine para o desempenho do Spark. 
  • Um ecossistema unificado e aberto: executar o Spark no Google Cloud representa uma integração total com serviços como o BigQuery para análise unificada, a Vertex AI para MLOps, o BigLake Metastore para compartilhamento de metadados abertos e o Dataplex Universal Catalog para governança de dados abrangente, tudo isso compatível com uma arquitetura de lakehouse aberta.

Vá além

Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.

Google Cloud