0
例如,我的筆記本電腦擁有8個內核,如果我提交:當您指定的分區數量多於可用內核數量時,會發生什麼情況?
sc.parallelize(1 to 100, 30).count
是否由一個執行任務的8首,然後其他22個任務執行一個當核心可用?
有沒有一種方法可以通過SparkUI或日誌來驗證我自己在引擎蓋下發生了什麼?
例如,我的筆記本電腦擁有8個內核,如果我提交:當您指定的分區數量多於可用內核數量時,會發生什麼情況?
sc.parallelize(1 to 100, 30).count
是否由一個執行任務的8首,然後其他22個任務執行一個當核心可用?
有沒有一種方法可以通過SparkUI或日誌來驗證我自己在引擎蓋下發生了什麼?
它先執行8個任務,然後當核心變爲可用時,其他22個任務逐個執行?
是的。 Spark UI有一個事件時間軸視圖來觀察它[1]。您還可以看到Spark日誌中的任務何時開始。
該鏈接非常有用!後續問題:如果任務數量永遠不會高於內核數量,那麼分配更多分區比內核數量沒有任何理由/好處,對嗎? – Glide
完全取決於數據,例如錯誤的分區,數據傾斜,失敗者(慢節點)。如果您的分區很大,並且調度任務的開銷很低,我會考慮使用比核心數量多的分區。 – zsxwing
對不起,我不明白你最後的回覆(由於我的知識有限)。我爲此創建了另一個問題。你能在那裏回答嗎? http://stackoverflow.com/questions/42284477/does-it-ever-make-sense-to-run-more-partitions-than-number-of-cores – Glide