使用Spark,如果我已经将我的累加器定义为关联和可简化的,为什么每个工作人员都将它们直接发送给驱动程序而不是随着我的实际工作逐渐减少?对我来说似乎有点傻。
答案 0 :(得分:1)
Spark中的每个任务都维护自己的累加器,并在特定任务完成后将其值发送回驱动程序。
由于累加器在Spark中主要是诊断和监视共享任务之间的累加器会使这些几乎无用。更不用说特定任务完成后工人失败会导致数据丢失,使得累加器的可靠性比现在更低。
此外,这种机制与标准RDD reduce
几乎相同,其中任务结果不断发送到驱动程序并在本地合并。