Las particiones son la unidad de paralelismo en Spark. Este post muestra cómo el número de particiones cambia la distribución de tareas y el rendimiento. Ref: repartition, coalesce.

Descargas al final: ir a Descargas.

En pocas palabras

  • Pocas particiones desaprovechan el cluster.
  • Demasiadas particiones agregan overhead.
  • Puedes inspeccionar y ajustar de forma segura.

Ejecuta tú mismo

  • Spark local (Docker): ruta principal de este blog.
  • Databricks Free Edition: alternativa rápida si no quieres Docker.
1
docker compose up

Links:


Crear un dataset

Usamos un rango grande para ver cómo Spark lo particiona.

1
df = spark.range(0, 5_000_000)

Ver particiones actuales

Inspeccionamos cuántas particiones tiene el DataFrame.

1
df.rdd.getNumPartitions()

Salida esperada (ejemplo):

8

Repartition vs coalesce

Probamos ambos para entender su impacto en tasks y shuffle.

1
2
df_repart = df.repartition(64)
df_coal = df.coalesce(8)

Salida esperada: df_repart tendrá 64 particiones; df_coal tendrá 8 o menos.


Qué verificar

  • El número de particiones cambia como esperas.
  • Más particiones aumentan tareas; menos las reducen.
  • La duración de tareas se balancea con un número razonable.

Notas de práctica

  • Empieza con defaults y ajusta con evidencia.
  • Repartition genera shuffle completo; coalesce lo evita.
  • Usa Spark UI para ver cómo se mapean tareas.

Descargas

Si no quieres copiar código, descarga el notebook o el .py.