【问题标题】:Spark Aggregatebykey partitioner orderSpark Aggregatebykey 分区器顺序
【发布时间】:2016-12-01 16:49:37
【问题描述】:

如果我将哈希分区器应用于 Spark 的 aggregatebykey 函数,即myRDD.aggregateByKey(0, new HashPartitioner(20))(combOp, mergeOp)

myRDD 在使用 combOp 和 mergeOp 聚合其键/值对之前是否先重新分区?还是 myRDD 先经过 combOp 和 mergeOp,然后使用 HashPartitioner 对生成的 RDD 重新分区?

【问题讨论】:

    标签: scala apache-spark rdd


    【解决方案1】:

    aggregateByKey 在最终洗牌之前应用地图端聚合。由于每个分区都是按顺序处理的,因此在此阶段应用的唯一操作是初始化(创建zeroValue)和combOpmergeOp 的目标是组合聚合缓冲区,以便在 shuffle 之前不使用它。

    如果输入 RDD 是一个 ShuffledRDD,其分区器与 aggregateByKey 请求的分区器相同,则根本不会对数据进行混洗,并且使用 mapPartitions 在本地聚合数据。

    【讨论】:

    • 感谢回复,请问mapPartitions映射是什么?组合操作?
    • @foboi1122 是的,combOp。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2020-04-13
    • 1970-01-01
    相关资源
    最近更新 更多