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