Particionamiento de RDDs y DataFrames en Spark con PySpark
Clase 24 de 25 • Curso de Fundamentos de Spark para Big Data
Resumen
¿Cómo particionar RDDs y DataFrames en Spark?
La partición de datos es una técnica eficaz para optimizar el procesamiento en Spark, ya que distribuye las cargas de trabajo y mejora la performance. En esta guía, aprenderás cómo particionar tanto RDDs como DataFrames, aprovechando las bondades de Spark para el manejo de grandes volúmenes de datos.
¿Cómo comenzar una sesión de Spark en Jupyter?
Para iniciar una sesión de Spark en Jupyter, es necesario importar los módulos de PySpark correctos. Aquí te mostramos cómo configurarla:
from pyspark.sql import SparkSession
# Configuración de la sesión de Spark
spark = SparkSession.builder \
.appName('particionado') \
.master('local[5]') \
.getOrCreate()
Este código inicia un contexto Spark local con 5 núcleos, configurando así las particiones por defecto.
¿Cómo verificar el número de particiones?
Una vez que tienes un DataFrame, es importante saber cuántas particiones fueron creadas por defecto. Puedes hacerlo fácilmente:
# Creación de un DataFrame de prueba
dataframe_prueba = spark.range(0, 20)
# Verificación del número de particiones
particiones = dataframe_prueba.rdd.getNumPartitions()
print(f"El número de particiones es: {particiones}") # Por defecto será 5
¿Cómo especificar el número de particiones manualmente?
Cuando crees un RDD, puedes definir explícitamente el número de particiones. Aquí te mostramos cómo:
from pyspark import SparkContext
# Creación del contexto Spark
sc = SparkContext.getOrCreate()
# Definición del conjunto de datos y partición
datos = sc.parallelize(range(0, 20), numSlices=10)
# Verificación del número de particiones
particiones_manual = datos.getNumPartitions()
print(f"Las particiones definidas son: {particiones_manual}") # Resultado esperado: 10
¿Cómo cargar archivos en RDDs con particiones?
Para trabajar visualmente con archivos, podrías crear un RDD a partir de un archivo y particionarlo:
# Creación de RDD desde archivo
archivo_rdd = sc.textFile('/ruta/al/archivo/deporte.csv', minPartitions=10)
# Verificación
print(f"Particiones del archivo: {archivo_rdd.getNumPartitions()}")
¿Cómo guardar RDDs particionados?
Cuando guardas RDDs particionados en disco, Spark almacena estos en una carpeta con múltiples archivos:
# Guardar RDD particionado
archivo_rdd.saveAsTextFile('/ruta/destino/nueva_carpeta')
Asegúrate de tener permisos adecuados para escribir las particiones.
¿Cómo cargar archivos particionados?
Cargar archivos es sencillo, pero es importante consolidar las particiones apropiadamente para transformarlas en DataFrames:
# Recargamos los archivos de una carpeta
rdd_recargado = sc.textFile('/ruta/destino/nueva_carpeta/*')
# Compresión y mapeo de RDDs
lista_valores = rdd_recargado.map(lambda x: x.split(',')).collect()
Después de recargar los archivos, Spark puede realizar operaciones adicionales, tales como transformaciones basadas en llaves y valores.
¿Por qué elegir métodos sencillos para particionar?
Elegir la forma más simple para cargar materiales de archivos en Spark no solo acelera procesos, sino también minimiza la complejidad. La claridad es clave para mantener un código eficiente y manejable. Encontrarás muchas rutas para manejar partituras; busca la que mejor se adapte a tus necesidades y compártelas con la comunidad para enriquecer el conocimiento común.
¡Continúa explorando y aprovechando las capacidades de Spark para lograr tus metas en big data!