Saltar al contenido
Lakehouse LabLakehouse LabPreparación Databricks Data Engineer
Módulo 05 · Lección

Catalyst y optimizaciones de consulta

Contenido abierto

Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.

Lección 2 de 5

Catalyst y optimizaciones de consulta

Particiones determinan paralelismo, tamaño de tareas y número de archivos.

Duración
17 min aprox.
Objetivo
Particiones determinan paralelismo, tamaño de tareas y número de archivos.
Siguiente paso
Continuar con la siguiente lección
Ver detalles del módulo

Catalyst, particiones, joins y shuffles

Razona sobre el plan lógico y físico antes de ajustar configuraciones o añadir cómputo.

Al terminar podrás
  • Leer explain formatted
  • Detectar Exchange, skew y spill
  • Elegir broadcast, repartition o coalesce con evidencia
Ver fuentes y revisión

Metadatos editoriales

Última revisión
21 jul 2026
Nivel
Associate + Professional
Ruta relacionada
core
Dominios blueprint
Troubleshooting and Optimization · Spark execution
Estado
Revisión editorial interna
Fuentes principales
Optimización en Databricks · Debugging con Spark UI
Reportar un error
02
Implementación

Catalyst y optimizaciones de consulta

Particiones determinan paralelismo, tamaño de tareas y número de archivos.

Mostrar prerrequisitos
Dificultad
Associate + Professional
Prerrequisitos
m04
Reportar un error en esta lección

spark.sql.shuffle.partitions controla particiones tras shuffles SQL; spark.default.parallelism influye en operaciones RDD y ciertos orígenes.

repartition provoca shuffle y puede aumentar o redistribuir; coalesce suele reducir sin shuffle completo. El objetivo es tareas suficientemente numerosas y archivos de tamaño razonable.

Modelo mental

Una partición de Spark es la unidad de datos que una tarea procesa secuencialmente. El número y distribución de particiones delimitan paralelismo, overhead, memoria por tarea y archivos de salida. Muy pocas dejan cores ociosos y crean tareas grandes; demasiadas producen planificación, conexiones y archivos pequeños. spark.sql.shuffle.partitions fija un punto de partida para shuffles SQL, aunque AQE puede fusionar particiones posteriores. repartition introduce una redistribución para aumentar o equilibrar; coalesce suele reducir aprovechando la distribución existente. No existe un número universal. Se dimensiona a partir de volumen comprimido, recursos, operadores y distribución, y se valida con métricas por tarea y tamaño de archivos.

Partición

Segmento lógico de un dataset que una tarea Spark procesa en un executor.

Conecta distribución de datos con paralelismo, memoria y duración.
Dependencia ancha

Relación en la que una partición de salida necesita datos de múltiples particiones de entrada.

Suele requerir shuffle y crear una nueva etapa de ejecución.
repartition

Operación que redistribuye datos mediante shuffle para crear una nueva partición física.

Puede equilibrar o aumentar paralelismo, pero añade coste que debe amortizarse.
PySparkReparto consciente
spark.conf.set("spark.sql.shuffle.partitions", 200)
balanced = events.repartition(200, "event_date")

El valor 200 es punto de prueba, no receta; mide tamaños y duración.

Puntos clave

  • Muy pocas particiones limitan paralelismo
  • Demasiadas crean overhead
  • repartition y coalesce no son equivalentes

Evita

  • Copiar un número fijo a cualquier volumen
  • coalesce a 1 antes de cada escritura

Recuerdo activo

¿Qué ajuste controla particiones de shuffle SQL?

Borrador privado · solo en este navegador
5 lecciones pendientes

Vista de lectura · sin ejecución

Learn Databricks

Learn Databricks · commit 08c378c

README.md