Wie erreicht Spark Parallelität innerhalb einer Task auf Multi-Core- oder Hyper-Thread-Maschinen?

Ich habe gelesen und versucht zu verstehen, wie das Spark-Framework seine Kerne in @ verwendeEigenständig mode. Laut Spark-Dokumentation ist der Parameter " spark.task.cpuser Wert von "@" ist standardmäßig auf 1 festgelegt. Dies bedeutet, dass die Anzahl der Kerne für jede Task zugewiesen wird.

Frage 1 Verwendet Spark bei einer Mehrkernmaschine (z. B. insgesamt 4 Kerne, 8 Hardware-Threads) bei "spark.task.cpus = 4" 4 Kerne (1 Thread pro Kern) oder 2 Kerne mit Hyper-Thread?

Was passiert, wenn ich "spark.task.cpus = 16" einstelle, also mehr als die Anzahl der verfügbaren Hardware-Threads auf diesem Computer?

Frage 2 Wie wird diese Art von Hardware-Parallelität erreicht? Ich habe versucht, in den Code zu schauen, konnte aber nichts finden, das mit der Hardware oder JVM für Parallelität auf Kernebene kommuniziert. Wenn die Aufgabe beispielsweise die Funktion "Filter" ist, wie wird eine einzelne Filteraufgabe auf mehrere Kerne oder Threads verteilt?

Vielleicht fehlt mir etwas. Hängt das mit der Scala-Sprache zusammen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage