Contenido del curso
Configuración
Operaciones RDDs
- 7

Transformaciones y Acciones en RDD de Spark
02:32 min - 8

Transformaciones y acciones
11:27 min - 9

Interacción con RDDs en Spark: Operaciones Básicas y Avanzadas
14:34 min - 10

Operaciones avanzadas con RDDs en Spark: Uniones y Joins
14:13 min - 11

Unión de Datos en RDD para Deportistas Olímpicos
03:09 min - 12

Operaciones Numéricas con RDDs en Juegos Olímpicos
08:59 min
Data Frames y SQL
- 13

Creación y Gestión de Data Frames en PySpark
14:09 min - 14

Creación de DataFrame desde RDD en PySpark
Viendo ahora - 15

Manipulación de Data Frames en PySpark
12:32 min - 16

Joins y Selección de Datos en DataFrames con PySpark
09:34 min - 17

Filtrado y Join de Datos Olímpicos en Pandas
05:02 min - 18

Funciones de Agregación en Spark para DataFrames
10:00 min - 19

Uso de SQLContext para Registro y Consultas con DataFrames en Spark
07:29 min - 20

Creación y Uso de Funciones UDF en Spark
01:06 min - 21

Creación y uso de UDFs en PySpark para manejo de datos faltantes
13:08 min
Persistencia y particionado
Conclusiones
Creación de DataFrame desde RDD en PySpark
Resumen
Transformar un RDD en un dataframe es una habilidad fundamental cuando trabajas con PySpark, ya que te permite aprovechar las ventajas de SQL y las optimizaciones del motor Catalyst. A continuación se explica paso a paso cómo lograrlo: desde limpiar el encabezado del RDD hasta aplicar un esquema tipado y obtener un dataframe listo para consultas.
¿Cómo eliminar el encabezado de un RDD antes de transformarlo?
Cuando un RDD proviene de un archivo CSV, la primera fila suele contener los nombres de las columnas. Ese encabezado debe retirarse antes de cualquier conversión.
Para ello se construye una función llamada elimina_encabezado que recibe dos parámetros:
- índice: la posición de la partición dentro del RDD.
- iterador: los elementos contenidos en esa partición.
Dentro de la función se convierte el iterador a lista y se retorna a partir del segundo elemento (lista[1:]), descartando así la primera fila [01:00].
La función se aplica al RDD mediante mapPartitionsWithIndex, un método que pasa a la función tanto el contenido de cada partición como su índice. De este modo, solo la partición que contiene el encabezado lo elimina [01:37].
python def elimina_encabezado(indice, iterador): l = list(iterador) return iter(l[1:])
deportista_olimpico = deportista_olimpico_rdd.mapPartitionsWithIndex(elimina_encabezado)
Al ejecutar deportista_olimpico.take(5) se confirma que el encabezado ya no aparece.
¿Por qué es necesario transformar los tipos de datos del RDD?
Un RDD creado desde un CSV almacena todo como string. Antes de construir el dataframe es imprescindible convertir cada campo al tipo correcto [02:22].
Se utiliza un map con lambda para recorrer cada registro y aplicar las conversiones:
int()para columnas enteras como el identificador del deportista, la edad, la altura y el equipo.float()para la columna de peso, que contiene valores decimales.- Las columnas de texto, como nombre y género, permanecen como string.
python deportista_olimpico = deportista_olimpico.map( lambda x: (int(x[0]), x[1], x[2], int(x[3]), int(x[4]), float(x[5]), int(x[6])) )
Un error frecuente es olvidar la conversión a float en campos decimales, lo que provoca pérdida de precisión o excepciones en tiempo de ejecución.
¿Cómo definir el esquema con StructType y StructField?
El esquema describe la estructura del futuro dataframe: nombre de columna, tipo de dato y si acepta nulos. Se define con StructType, que recibe una lista de objetos StructField [03:10].
python from pyspark.sql.types import StructType, StructField, IntegerType, StringType, FloatType
esquema = StructType([ StructField("deportista_id", IntegerType(), False), StructField("nombre", StringType(), False), StructField("genero", StringType(), False), StructField("edad", IntegerType(), False), StructField("altura", IntegerType(), False), StructField("peso", FloatType(), False), StructField("equipo_id", IntegerType(), False) ])
El tercer parámetro de cada StructField indica si el campo puede ser nulo. Al establecerlo en False se exige que todos los valores estén presentes, evitando registros incompletos.
¿Cómo aplicar el esquema al RDD para obtener el dataframe?
Con el esquema listo, se utiliza sqlContext.createDataFrame pasando el RDD y el esquema como argumentos [04:30].
python deportista_df = sqlContext.createDataFrame(deportista_olimpico, esquema) deportista_df.show()
Si aparece un error de cierre de llaves o tipos incorrectos, revisa que cada StructField esté correctamente escrito y que las conversiones del map coincidan con los tipos declarados en el esquema [04:48].
Una vez creado, el dataframe puede visualizarse con .show() y almacenarse para transformaciones posteriores. Es importante no guardar el dataframe en modo de solo visualización, sino asignarlo a una variable que permita reutilizarlo en operaciones futuras.
Como práctica recomendada, convierte todos los archivos CSV que hayas cargado como RDD a dataframes con sus respectivos esquemas; esto prepara el entorno para trabajar con múltiples fuentes de datos de forma integrada. Si tienes dudas sobre algún paso, compártelas en la sección de comentarios.