MISIÓN 2 · Lección 6

Aplicación de Análisis con Apache Spark

En esta lección construiremos una aplicación práctica de análisis de datos utilizando Spark. Aprovecharemos su capacidad de procesamiento en memoria y su librería MLlib para Machine Learning distribuido.

Lectura de datos

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("AnalisisSpark").getOrCreate()

# Cargar dataset de reseñas
df = spark.read.csv("reviews.csv", header=True, inferSchema=True)
df.show(5)

Preprocesamiento de texto

from pyspark.ml.feature import Tokenizer, StopWordsRemover, HashingTF, IDF

# Tokenización
tokenizer = Tokenizer(inputCol="texto", outputCol="tokens")
tokens = tokenizer.transform(df)

# Remover stopwords
remover = StopWordsRemover(inputCol="tokens", outputCol="tokens_limpios")
clean_tokens = remover.transform(tokens)

Transformación TF-IDF

# Vectorización
hashingTF = HashingTF(inputCol="tokens_limpios", outputCol="tf")
tf = hashingTF.transform(clean_tokens)

idf = IDF(inputCol="tf", outputCol="features")
idf_model = idf.fit(tf)
df_features = idf_model.transform(tf)

Entrenamiento de un modelo de clasificación

from pyspark.ml.classification import LogisticRegression

lr = LogisticRegression(featuresCol="features", labelCol="label")
model = lr.fit(df_features)

predicciones = model.transform(df_features)
predicciones.select("texto", "label", "prediction").show(5)

Evaluación del modelo

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator(
    labelCol="label", predictionCol="prediction", metricName="accuracy")

accuracy = evaluator.evaluate(predicciones)
print("Accuracy =", accuracy)

Pipeline en Spark

from pyspark.ml import Pipeline

pipeline = Pipeline(stages=[tokenizer, remover, hashingTF, idf, lr])
modelo_pipeline = pipeline.fit(df)
predicciones = modelo_pipeline.transform(df)
predicciones.select("texto", "label", "prediction").show(5)

Ventajas de usar Spark MLlib

Aplicaciones prácticas

Reflexión final

Apache Spark facilita el análisis de grandes volúmenes de datos y la creación de modelos de Machine Learning distribuidos. Su potencia y escalabilidad lo convierten en una herramienta esencial en proyectos de Big Data.