O Apache Spark é um mecanismo de processamento distribuído projetado para processar dados estruturados, semiestruturados e não estruturados em escala. Para interagir com o mecanismo e definir operações de dados distribuídos, os desenvolvedores usam a API Spark.
No centro do desenvolvimento moderno do Spark está a API Spark DataFrame. Um DataFrame organiza e processa dados distribuídos em colunas nomeadas, de forma semelhante a uma tabela em um banco de dados relacional ou uma planilha. Ele oferece uma interface estruturada e declarativa para analisar conjuntos de dados enormes, otimizando automaticamente a execução física nos bastidores.
Para entender como a API Spark executa seu código em uma rede distribuída, é importante conhecer os componentes básicos da arquitetura do ambiente de execução:
Ao projetar pipelines de dados distribuídos, os desenvolvedores escolhem entre duas interfaces de programação principais:
Para quase todos os casos de uso de engenharia e ciência de dados, a API DataFrame é a escolha preferida. Os RDDs são reservados para cenários em que você precisa manipular dados brutos e não estruturados (como arquivos binários ou streams de mídia) usando objetos Java personalizados. Os DataFrames exigem menos código, são executados automaticamente com mais rapidez e usam o gerenciamento de memória binária fora do heap para evitar gargalos de coleta de lixo da JVM.
A API Spark DataFrame simplifica as tarefas computacionais exigentes de processamento, limpeza e preparação de grandes volumes de dados.
A API Spark DataFrame serve como a base programática para as bibliotecas de processamento avançado do Spark:
Otimização declarativa
Os DataFrames usam um otimizador de consultas integrado chamado Catalyst Optimizer. Quando você escreve o código do DataFrame, o otimizador reescreve automaticamente o plano de execução física aplicando o pushdown de filtro, a poda de projeção e a reordenação de mesclagem para que seja executado o mais rápido possível sem ajuste manual.
Flexibilidade de linguagem
Não importa se sua equipe escreve código em Python (PySpark), Scala, Java ou R. A API DataFrame garante um desempenho idêntico. O plano de execução subjacente é compilado e otimizado na mesma camada de execução independente da JVM.
Gerenciamento de memória eficiente
Os DataFrames usam o mecanismo de execução Tungsten para armazenar dados em um formato binário fora do heap altamente compactado. Isso elimina o overhead de criação de objetos da JVM e evita que as pausas da coleta de lixo congelem as linhas de execução do executor.
Tradicionalmente, executar o Spark de código aberto requer configuração manual de clusters, gerenciamento de versões de software e peering de rede complexo. Para simplificar isso, o Google Cloud oferece o Serviço Gerenciado para Apache Spark, transformando a execução distribuída em uma plataforma de dados totalmente gerenciada e pronta para empresas.
As equipes de dados executam cargas de trabalho do DataFrame do Spark no Google Cloud usando os seguintes recursos:
Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.