【发布时间】:2019-03-05 16:39:31
【问题描述】:
他们在《学习火花》一书中写道:
对于作用于单个 RDD 的操作,例如 reduceByKey(), 在 预分区 RDD 上运行将导致每个 RDD 的所有值 要在单台机器上本地计算的密钥,只需要 最终的,从每个工作节点发送回的本地缩减值 主人。
但是,作者在this answer 中说,不需要预先分区,因为:
对于reduceByKey(),第一质量聚合相同的元素 键与提供的关联减少功能本地首先 每个 executor,然后最终在 executor 之间聚合。
那么,如果reduceByKey() 无论如何都会首先在每个执行程序上聚合元素而不对数据进行洗牌,那么为什么一本书建议进行预分区?
【问题讨论】:
标签: apache-spark