Crear una base RDD y transformarla

El volumen de datos no estructurados (líneas de registro, imágenes, archivos binarios) existente está aumentando de forma espectacular, y PySpark es un marco excelente para analizar este tipo de datos mediante RDD. En este ejercicio de 3 partes escribirás código para calcular las palabras más frecuentes en Obras completas de William Shakespeare.

Estos son los breves pasos que debes dar para escribir el programa de recuento de palabras:

  • Crea una base RDD a partir del archivo Complete_Shakespeare.txt.
  • Utiliza la transformación de RDD para crear una lista larga de palabras a partir de cada elemento de la base RDD.
  • Elimina las palabras vacías de tus datos.
  • Crea el par RDD en el que cada elemento sea una tupla par de ('w', 1)
  • Agrupa los elementos del par RDD por clave (palabra) y suma sus valores.
  • Intercambia las claves (palabra) y los valores (recuentos) de forma que las claves sean el recuento y el valor sea la palabra.
  • Por último, ordena el RDD en orden descendente e imprime las 10 palabras más frecuentes y sus frecuencias.

En este primer ejercicio crearás una base RDD a partir del archivo Complete_Shakespeare.txt y la transformarás para crear una lista larga de palabras.

Recuerda que ya tienes sc de SparkContext disponible en tu espacio de trabajo. También se ha cargado una variable file_path (que es la ruta del archivo Complete_Shakespeare.txt).

Este ejercicio forma parte del curso

Fundamentos de big data con PySpark

Ver curso

Instrucciones de ejercicio

  • Crea un RDD llamado baseRDD que lea las líneas de file_path.
  • Transforma el baseRDD en una lista larga de palabras y crea un nuevo splitRDD.
  • Cuenta el número total de palabras en splitRDD.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# Create a baseRDD from the file path
baseRDD = sc.____(file_path)

# Split the lines of baseRDD into words
splitRDD = baseRDD.____(lambda x: x.split())

# Count the total number of words
print("Total number of words in splitRDD:", splitRDD.____())