O Spark é um mecanismo de análise distribuída para cargas de trabalho de big data. Ele combina cache em memória com um mecanismo de execução baseado em grafo acíclico direcionado (DAG) para oferecer alto desempenho em processamento em lote, consultas interativas e streaming em tempo real.
Arquitetura
O Spark Core constitui a base da plataforma Spark. Quatro bibliotecas especializadas complementam essa base:
Spark SQL: compatível com extração, transformação e carga (ETL) offline e processamento analítico online (OLAP)
Spark Streaming: processa streams em tempo real
MLlib: executa cargas de trabalho de machine learning
-
GraphX: realiza computação de grafos
Para consultar a referência completa das bibliotecas, visite o site oficial do Apache Spark.
Cenários
-
ETL offline
O ETL offline abrange cenários de data warehousing nos quais grandes volumes de dados são extraídos, transformados e carregados em massa. Esses jobs geralmente seguem uma programação predefinida, em vez de executar sob demanda. O processamento em memória e a otimização baseada em DAG do Spark tornam essa solução ideal para pipelines de ETL em lote de grande escala.
-
OLAP
O OLAP atende a cenários de business intelligence (BI) em que analistas enviam consultas interativas e esperam resultados rápidos. Entre os mecanismos OLAP mais comuns estão Presto, Impala e Spark. Escolha o Spark quando suas consultas envolverem transformações complexas ou quando for necessário um único mecanismo capaz de lidar com cargas de ETL e ML no mesmo cluster. O E-MapReduce (EMR) Spark 2.4 oferece suporte aos principais recursos do Spark 3.0. Para obter mais informações, consulte o guia do Spark SQL.
-
Processamento de streams
O processamento de streams cobre cenários de dados em tempo real, como atualizações de painéis, gerenciamento de riscos, recomendações, monitoramento e alertas. Dois mecanismos comuns executam no EMR: Spark Streaming e Flink. O Spark Streaming disponibiliza duas APIs: DStream e Structured Streaming. Como o Structured Streaming utiliza o mesmo modelo de DataFrame dos jobs em lote, sua curva de aprendizado é baixa. Utilize o Flink quando sua carga de trabalho exigir a menor latência ponta a ponta possível. Opte pelo Spark Streaming quando precisar de maior throughput. Para obter mais informações, consulte o guia de programação do Structured Streaming.
-
Machine learning
A MLlib é uma biblioteca escalável de machine learning integrada ao Spark. Ela inclui algoritmos de classificação, regressão, filtragem colaborativa e agregação, além de ferramentas para seleção de modelos, ajuste automático de hiperparâmetros e validação cruzada. A MLlib concentra-se em algoritmos que não envolvem deep learning e integra-se diretamente ao modelo de dados distribuído do Spark, eliminando a necessidade de um cluster de treinamento separado. Para obter mais informações, consulte o guia da Machine Learning Library (MLlib).
-
Computação de grafos
O GraphX é a biblioteca de computação de grafos do Spark. Ela oferece suporte a operadores de propriedades, estruturais, de junção e de agregação de vizinhança, atendendo à maioria das cargas de análise de grafos sem exigir um banco de dados dedicado. Para obter mais informações, consulte o guia de programação do GraphX.