我想知道以下问题的答案。
如果没有一个执行者少于RDD中的分区,如何处理RDD?
答案 0 :(得分:0)
这是非常普遍的情况;实际上,您通常会配置作业,以使任务比执行者更多(请参见https://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/)
Spark将为每个分区创建一个任务,并在可用的执行程序之间共享任务(请记住,执行程序可能具有多个核心,因此它可以同时处理多个任务)。
因此,每个执行者将处理自己的分区份额,直到全部处理完毕。
Spark还将在可能的情况下(例如,“本地性”-参见What's the meaning of "Locality Level"on Spark cluster),将任务分配给数据本地的执行者,以最大程度地减少需要在集群中移动的数据量。