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.
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)
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)
# 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)
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)
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
evaluator = MulticlassClassificationEvaluator(
labelCol="label", predictionCol="prediction", metricName="accuracy")
accuracy = evaluator.evaluate(predicciones)
print("Accuracy =", accuracy)
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)
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.