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.
- Leer explain formatted
- Detectar Exchange, skew y spill
- Elegir broadcast, repartition o coalesce con evidencia
02ImplementaciónCatalyst y optimizaciones de consulta
Particiones determinan paralelismo, tamaño de tareas y número de archivos.
+
Catalyst y optimizaciones de consulta
Particiones determinan paralelismo, tamaño de tareas y número de archivos.
Mostrar prerrequisitos
- Dificultad
- Associate + Professional
- Prerrequisitos
- m04
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.
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.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.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.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