Skip to content

Optimizacion ​

Optimizar PySpark empieza entendiendo el plan, el shuffle, el particionado y el tamaño de archivos.

Explain ​

python
df.explain(True)

Revisa:

  • Scans.
  • Filters.
  • Joins.
  • Exchanges.
  • Sorts.

Shuffle ​

Shuffle mueve datos entre executors. Es caro.

Lo generan:

  • groupBy
  • join
  • distinct
  • orderBy
  • ventanas.

Repartition y coalesce ​

python
df.repartition(200)
df.coalesce(20)

repartition hace shuffle. coalesce reduce particiones con menos coste.

Cache ​

python
df.cache()
df.count()

Cachea solo si reutilizas el DataFrame y cabe razonablemente.

UDFs ​

Evita UDFs Python si existe funcion nativa de Spark.

Las UDFs pueden romper optimizaciones y ser mas lentas.

Buenas practicas ​

  • Mide antes de tocar configuracion.
  • Evita shuffle innecesario.
  • Usa broadcast joins.
  • Controla archivos pequeños.
  • Evita collect().
  • Usa Spark UI para diagnosticar.