En este módulo, aprenderemos cómo cargar y guardar datos en Apache Spark. Este es un aspecto fundamental del procesamiento de datos, ya que Spark se utiliza a menudo para transformar y analizar grandes volúmenes de datos que se encuentran en diversas fuentes. A lo largo de esta sección, cubriremos los siguientes temas:
- Introducción a la carga y guardado de datos en Spark
- Cargar datos desde diferentes fuentes
- Guardar datos en diferentes formatos
- Ejemplos prácticos
- Ejercicios prácticos
- Introducción a la carga y guardado de datos en Spark
Apache Spark proporciona una API unificada para cargar y guardar datos en una variedad de formatos y fuentes de datos. Esto incluye archivos CSV, JSON, Parquet, bases de datos relacionales, y más. La capacidad de Spark para manejar diferentes formatos de datos y fuentes lo hace extremadamente versátil para el procesamiento de datos.
- Cargar datos desde diferentes fuentes
2.1 Cargar datos desde archivos CSV
Para cargar datos desde un archivo CSV, utilizamos el método spark.read.csv()
. Aquí hay un ejemplo básico:
from pyspark.sql import SparkSession # Crear una sesión de Spark spark = SparkSession.builder.appName("CargarDatosCSV").getOrCreate() # Cargar datos desde un archivo CSV df = spark.read.csv("ruta/al/archivo.csv", header=True, inferSchema=True) # Mostrar las primeras filas del DataFrame df.show()
Explicación:
header=True
: Indica que el archivo CSV tiene una fila de encabezado.inferSchema=True
: Permite a Spark inferir automáticamente el tipo de datos de cada columna.
2.2 Cargar datos desde archivos JSON
Para cargar datos desde un archivo JSON, utilizamos el método spark.read.json()
. Aquí hay un ejemplo:
# Cargar datos desde un archivo JSON df = spark.read.json("ruta/al/archivo.json") # Mostrar las primeras filas del DataFrame df.show()
2.3 Cargar datos desde archivos Parquet
Parquet es un formato de almacenamiento columnar que es eficiente para el almacenamiento y la consulta de grandes conjuntos de datos. Para cargar datos desde un archivo Parquet, utilizamos el método spark.read.parquet()
:
# Cargar datos desde un archivo Parquet df = spark.read.parquet("ruta/al/archivo.parquet") # Mostrar las primeras filas del DataFrame df.show()
2.4 Cargar datos desde una base de datos
Para cargar datos desde una base de datos relacional, utilizamos el método spark.read.jdbc()
. Aquí hay un ejemplo:
# Definir la URL de la base de datos y las propiedades de conexión url = "jdbc:mysql://localhost:3306/nombre_base_datos" properties = { "user": "usuario", "password": "contraseña", "driver": "com.mysql.jdbc.Driver" } # Cargar datos desde una tabla de la base de datos df = spark.read.jdbc(url=url, table="nombre_tabla", properties=properties) # Mostrar las primeras filas del DataFrame df.show()
- Guardar datos en diferentes formatos
3.1 Guardar datos en archivos CSV
Para guardar datos en un archivo CSV, utilizamos el método df.write.csv()
. Aquí hay un ejemplo:
3.2 Guardar datos en archivos JSON
Para guardar datos en un archivo JSON, utilizamos el método df.write.json()
:
3.3 Guardar datos en archivos Parquet
Para guardar datos en un archivo Parquet, utilizamos el método df.write.parquet()
:
3.4 Guardar datos en una base de datos
Para guardar datos en una base de datos relacional, utilizamos el método df.write.jdbc()
. Aquí hay un ejemplo:
# Guardar datos en una tabla de la base de datos df.write.jdbc(url=url, table="nombre_tabla_salida", mode="overwrite", properties=properties)
- Ejemplos prácticos
Ejemplo 1: Cargar y guardar datos CSV
# Crear una sesión de Spark spark = SparkSession.builder.appName("EjemploCSV").getOrCreate() # Cargar datos desde un archivo CSV df = spark.read.csv("ruta/al/archivo.csv", header=True, inferSchema=True) # Realizar alguna transformación (por ejemplo, filtrar filas) df_filtrado = df.filter(df["columna"] > 10) # Guardar los datos filtrados en un nuevo archivo CSV df_filtrado.write.csv("ruta/de/salida_filtrada.csv", header=True)
Ejemplo 2: Cargar y guardar datos JSON
# Crear una sesión de Spark spark = SparkSession.builder.appName("EjemploJSON").getOrCreate() # Cargar datos desde un archivo JSON df = spark.read.json("ruta/al/archivo.json") # Realizar alguna transformación (por ejemplo, seleccionar columnas) df_seleccionado = df.select("columna1", "columna2") # Guardar los datos seleccionados en un nuevo archivo JSON df_seleccionado.write.json("ruta/de/salida_seleccionada.json")
- Ejercicios prácticos
Ejercicio 1: Cargar y guardar datos CSV
Instrucciones:
- Carga un archivo CSV que contenga datos de ventas.
- Filtra las filas donde las ventas sean mayores a 1000.
- Guarda los datos filtrados en un nuevo archivo CSV.
Solución:
# Crear una sesión de Spark spark = SparkSession.builder.appName("EjercicioCSV").getOrCreate() # Cargar datos desde un archivo CSV df = spark.read.csv("ruta/al/archivo_ventas.csv", header=True, inferSchema=True) # Filtrar las filas donde las ventas sean mayores a 1000 df_filtrado = df.filter(df["ventas"] > 1000) # Guardar los datos filtrados en un nuevo archivo CSV df_filtrado.write.csv("ruta/de/salida_ventas_filtradas.csv", header=True)
Ejercicio 2: Cargar y guardar datos JSON
Instrucciones:
- Carga un archivo JSON que contenga datos de usuarios.
- Selecciona las columnas "nombre" y "edad".
- Guarda los datos seleccionados en un nuevo archivo JSON.
Solución:
# Crear una sesión de Spark spark = SparkSession.builder.appName("EjercicioJSON").getOrCreate() # Cargar datos desde un archivo JSON df = spark.read.json("ruta/al/archivo_usuarios.json") # Seleccionar las columnas "nombre" y "edad" df_seleccionado = df.select("nombre", "edad") # Guardar los datos seleccionados en un nuevo archivo JSON df_seleccionado.write.json("ruta/de/salida_usuarios_seleccionados.json")
Conclusión
En esta sección, hemos aprendido cómo cargar y guardar datos en Apache Spark desde y hacia diferentes formatos y fuentes de datos. Estos son conceptos fundamentales que te permitirán trabajar con datos en Spark de manera eficiente. En el próximo módulo, profundizaremos en las operaciones con DataFrames, donde aprenderás a manipular y transformar datos de manera más avanzada.
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