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