Introducción a los DataFrames
Los DataFrames son una abstracción de datos en Apache Spark que permite trabajar con datos estructurados de manera eficiente. Son similares a las tablas en una base de datos relacional o a los DataFrames en pandas de Python. Los DataFrames en Spark proporcionan una API de alto nivel para trabajar con datos distribuidos y permiten realizar operaciones complejas de manera sencilla y eficiente.
Características Clave de los DataFrames
- Distribuidos: Los DataFrames están distribuidos a través de un clúster, lo que permite manejar grandes volúmenes de datos.
- Inmutables: Una vez creados, los DataFrames no pueden ser modificados. Cualquier operación sobre un DataFrame genera un nuevo DataFrame.
- Optimización Automática: Spark optimiza automáticamente las consultas sobre DataFrames utilizando el motor de optimización Catalyst.
- Interoperabilidad: Los DataFrames pueden ser creados a partir de diversas fuentes de datos como archivos CSV, JSON, Parquet, bases de datos SQL, entre otros.
Creación de DataFrames
Desde un RDD
from pyspark.sql import SparkSession
# Crear una sesión de Spark
spark = SparkSession.builder.appName("DataFrameExample").getOrCreate()
# Crear un RDD
rdd = spark.sparkContext.parallelize([(1, "Alice", 29), (2, "Bob", 31), (3, "Cathy", 25)])
# Definir el esquema
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
schema = StructType([
StructField("id", IntegerType(), True),
StructField("name", StringType(), True),
StructField("age", IntegerType(), True)
])
# Crear un DataFrame a partir del RDD y el esquema
df = spark.createDataFrame(rdd, schema)
# Mostrar el DataFrame
df.show()Desde un archivo CSV
# Leer un archivo CSV en un DataFrame
df_csv = spark.read.csv("path/to/file.csv", header=True, inferSchema=True)
# Mostrar el DataFrame
df_csv.show()Desde un archivo JSON
# Leer un archivo JSON en un DataFrame
df_json = spark.read.json("path/to/file.json")
# Mostrar el DataFrame
df_json.show()Operaciones Básicas con DataFrames
Selección de Columnas
# Seleccionar una columna
df.select("name").show()
# Seleccionar múltiples columnas
df.select("name", "age").show()Filtrado de Filas
Agregaciones
Ordenamiento
# Ordenar por una columna
df.orderBy("age").show()
# Ordenar por múltiples columnas
df.orderBy(df.age.desc(), df.name.asc()).show()Ejercicio Práctico
Ejercicio 1: Creación y Manipulación de DataFrames
- Crear un DataFrame: Crea un DataFrame a partir de un archivo CSV que contenga información de empleados (id, nombre, edad, departamento).
- Seleccionar Columnas: Selecciona las columnas "nombre" y "departamento".
- Filtrar Filas: Filtra los empleados que tienen más de 30 años.
- Agregación: Calcula la edad promedio de los empleados.
- Ordenamiento: Ordena los empleados por edad de manera descendente.
Solución
# Crear una sesión de Spark
spark = SparkSession.builder.appName("EmployeeDataFrame").getOrCreate()
# Leer el archivo CSV en un DataFrame
df_employees = spark.read.csv("path/to/employees.csv", header=True, inferSchema=True)
# Seleccionar las columnas "nombre" y "departamento"
df_selected = df_employees.select("nombre", "departamento")
# Filtrar los empleados que tienen más de 30 años
df_filtered = df_employees.filter(df_employees.edad > 30)
# Calcular la edad promedio de los empleados
df_avg_age = df_employees.groupBy().avg("edad")
# Ordenar los empleados por edad de manera descendente
df_sorted = df_employees.orderBy(df_employees.edad.desc())
# Mostrar los resultados
df_selected.show()
df_filtered.show()
df_avg_age.show()
df_sorted.show()Conclusión
En esta sección, hemos aprendido sobre los DataFrames en Apache Spark, cómo crearlos a partir de diferentes fuentes de datos y cómo realizar operaciones básicas como selección, filtrado, agregación y ordenamiento. Los DataFrames son una herramienta poderosa para trabajar con datos estructurados en Spark, y su uso eficiente puede mejorar significativamente el rendimiento y la simplicidad de las tareas de procesamiento de datos.
En el próximo tema, exploraremos Spark SQL, que nos permitirá realizar consultas SQL sobre DataFrames y aprovechar la optimización automática de Spark para consultas complejas.
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
