¿Cómo logra Spark el paralelismo dentro de una tarea en máquinas de múltiples núcleos o hiperhilos?

He estado leyendo e intentando entender cómo Spark Framework utiliza sus núcleos enSer único modo. Según la documentación de Spark, el parámetro "spark.task.cpusEl valor de "se establece en 1 de forma predeterminada, lo que significa la cantidad de núcleos que se asignarán a cada tarea.

Pregunta 1: Para una máquina multinúcleo (p. Ej., 4 núcleos en total, 8 hilos de hardware), cuando "spark.task.cpus = 4", ¿utilizará Spark 4 núcleos (1 hilo por núcleo) o 2 núcleos con hiperhilo?

¿Qué sucederá si configuro "spark.task.cpus = 16", más que el número de subprocesos de hardware disponibles en esta máquina?

Pregunta 2: ¿Cómo se logra este tipo de paralelismo de hardware? Traté de buscar en el código pero no pude encontrar nada que se comunicara con el hardware o JVM para el paralelismo a nivel de núcleo. Por ejemplo, si la tarea es la función "filtro", ¿cómo se divide una única tarea de filtro en múltiples núcleos o subprocesos?

Tal vez me estoy perdiendo algo. ¿Está esto relacionado con el lenguaje Scala?

Respuestas a la pregunta(1)

Su respuesta a la pregunta