Introducción
En este tema, aprenderemos a realizar operaciones con DataFrames en Apache Spark. Los DataFrames son una abstracción de datos distribuidos que proporcionan una API de alto nivel para trabajar con datos estructurados y semiestructurados. Los DataFrames son similares a las tablas en una base de datos relacional y permiten realizar operaciones como selección, filtrado, agregación y unión de datos.
Contenido
- Creación de DataFrames
- Selección y Filtrado de Datos
- Agregaciones y Agrupaciones
- Uniones y Combinaciones
- Transformaciones y Acciones
- Ejercicios Prácticos
- Creación de DataFrames
Desde un archivo CSV
from pyspark.sql import SparkSession
# Crear una sesión de Spark
spark = SparkSession.builder.appName("DataFrameOperations").getOrCreate()
# Leer un archivo CSV en un DataFrame
df = spark.read.csv("path/to/file.csv", header=True, inferSchema=True)
df.show()Desde una lista de Python
data = [("Alice", 34), ("Bob", 45), ("Cathy", 29)]
columns = ["Name", "Age"]
df = spark.createDataFrame(data, columns)
df.show()
- Selección y Filtrado de Datos
Selección de Columnas
# Seleccionar una columna
df.select("Name").show()
# Seleccionar múltiples columnas
df.select("Name", "Age").show()Filtrado de Filas
# Filtrar filas donde la edad es mayor que 30
df.filter(df.Age > 30).show()
# Filtrar filas usando SQL
df.createOrReplaceTempView("people")
spark.sql("SELECT * FROM people WHERE Age > 30").show()
- Agregaciones y Agrupaciones
Agregaciones Simples
# Calcular la edad promedio
df.agg({"Age": "avg"}).show()
# Calcular la edad máxima
df.agg({"Age": "max"}).show()Agrupaciones
# Agrupar por nombre y contar
df.groupBy("Name").count().show()
# Agrupar por nombre y calcular la edad promedio
df.groupBy("Name").agg({"Age": "avg"}).show()
- Uniones y Combinaciones
Uniones
data1 = [("Alice", 34), ("Bob", 45)]
data2 = [("Alice", "F"), ("Bob", "M")]
df1 = spark.createDataFrame(data1, ["Name", "Age"])
df2 = spark.createDataFrame(data2, ["Name", "Gender"])
# Realizar una unión
df1.join(df2, "Name").show()Combinaciones
- Transformaciones y Acciones
Transformaciones
Las transformaciones son operaciones que devuelven un nuevo DataFrame y son perezosas, es decir, no se ejecutan hasta que se llama a una acción.
# Añadir una nueva columna
df.withColumn("AgeAfter10Years", df.Age + 10).show()
# Renombrar una columna
df.withColumnRenamed("Age", "Years").show()Acciones
Las acciones son operaciones que devuelven un valor al controlador o escriben datos a un sistema de almacenamiento.
- Ejercicios Prácticos
Ejercicio 1: Creación y Selección
Instrucciones:
- Crea un DataFrame a partir de una lista de tuplas.
- Selecciona y muestra solo las columnas "Name" y "Age".
Código:
data = [("Alice", 34), ("Bob", 45), ("Cathy", 29)]
columns = ["Name", "Age"]
df = spark.createDataFrame(data, columns)
df.select("Name", "Age").show()Ejercicio 2: Filtrado y Agregación
Instrucciones:
- Filtra las filas donde la edad es mayor que 30.
- Calcula la edad promedio de las filas filtradas.
Código:
Ejercicio 3: Unión de DataFrames
Instrucciones:
- Crea dos DataFrames.
- Realiza una unión de los DataFrames en la columna "Name".
Código:
data1 = [("Alice", 34), ("Bob", 45)]
data2 = [("Alice", "F"), ("Bob", "M")]
df1 = spark.createDataFrame(data1, ["Name", "Age"])
df2 = spark.createDataFrame(data2, ["Name", "Gender"])
df1.join(df2, "Name").show()Conclusión
En esta sección, hemos aprendido a realizar diversas operaciones con DataFrames en Apache Spark, incluyendo la creación, selección, filtrado, agregación, y unión de datos. Estas operaciones son fundamentales para el procesamiento y análisis de grandes volúmenes de datos. En el próximo módulo, profundizaremos en el manejo de datos faltantes y otras operaciones avanzadas con DataFrames.
Curso de Apache Spark
Módulo 1: Introducción a Apache Spark
Módulo 2: Conceptos Básicos de Spark
- RDDs (Conjuntos de Datos Distribuidos Resilientes)
- Transformaciones y Acciones
- DataFrames de Spark
- Spark SQL
Módulo 3: Procesamiento de Datos con Spark
Módulo 4: Programación Avanzada en Spark
Módulo 5: Ajuste y Optimización del Rendimiento
- Entendiendo los Trabajos de Spark
- Caché y Persistencia
- Gestión de Memoria
- Optimizando Aplicaciones Spark
Módulo 6: Spark en la Nube
- Ejecutando Spark en AWS
- Ejecutando Spark en Azure
- Ejecutando Spark en Google Cloud
- Spark con Kubernetes
Módulo 7: Aplicaciones del Mundo Real y Estudios de Caso
- Procesamiento de Datos en Tiempo Real
- Analítica de Big Data
- Pipelines de Aprendizaje Automático
- Estudios de Caso
