例如,如果我在 Spark 驱动程序中运行以下代码:
rdd.foreachPartition(iterator => myFunc(iterator))
val x = 1
驱动程序是否会等待每个分区完成运行myFunc()
,然后再继续设置变量x
?还是驱动程序会在至少一个分区仍在myFunc()
运行时设置x
?
是的,确实如此。除AsyncRDDActions
外,所有RDD
方法都在阻塞,并等待相关任务完成。