Apache Spark¶
O Apache Spark é um mecanismo para executar engenharia de dados, ciência de dados e aprendizado de máquina em máquinas de nó único ou clusters. Spark provê uma interface para programação de clusters com paralelismo e tolerância a falhas.
Características principais:¶
Dados em lote/transmissão: Unifica o processamento dos dados em lotes e transmissão em tempo real, utilizando: Python, SQL, Scala, Java ou R.
Análise SQL: Executa consultas ANSI SQL rápidas e distribuídas para criação de dashboards e relatórios.
Ciência de dados em escala: Realiza Análise Exploratória de Dados (EDA) em dados em escala de petabytes sem precisar recorrer à amostragem.
Aprendizado de Máquina: Treinar algoritmos de aprendizado de máquina em um laptop e usar o mesmo código para escalar para clusters tolerantes a falhas com milhares de máquinas.
Links¶
[1] Descrição: https://spark.apache.org/, https://pt.wikipedia.org/wiki/Apache_Spark
[2] Instalação: https://spark.apache.org/downloads.html
[3] Repositório: https://github.com/apache/spark
[4] Documentação: https://spark.apache.org/docs/latest/
[5] Quickstart: https://spark.apache.org/docs/latest/quick-start.html
Dependências¶
[1] Apache Spark 3.5.1
[2] Python
Instalação e Uso¶
Python¶
Using Python
$ pip install pyspark
$ pyspark
Using Docker
$ docker run -it --rm spark:python3 /opt/spark/bin/pyspark
QuickStart¶
df = spark.read.json("logs.json")
df.where("age > 21").select("name.first").show()
Machine Learning¶
# Every record contains a label and feature vector
df = spark.createDataFrame(data, ["label", "features"])
# Split the data into train/test datasets
train_df, test_df = df.randomSplit([.80, .20], seed=42)
# Set hyperparameters for the algorithm
rf = RandomForestRegressor(numTrees=100)
# Fit the model to the training data
model = rf.fit(train_df)
# Generate predictions on the test dataset.
model.transform(test_df).show()
Analytics e Data Science¶
df = spark.read.csv("accounts.csv", header=True)
# Select subset of features and filter for balance > 0
filtered_df = df.select("AccountBalance", "CountOfDependents").filter("AccountBalance > 0")
# Generate summary statistics
filtered_df.summary().show()
SQL¶
$ docker run -it --rm spark /opt/spark/bin/spark-sql
spark-sql>
QuickStart¶
SELECT
name.first AS first_name,
name.last AS last_name,
age
FROM json.`logs.json`
WHERE age > 21;