我有:
A_RDD = anRDD.map()
B_RDD = A_RDD.aggregateByKey()
好的,我的问题是:
如果我在A_RDD之后放置partitionBy(new HashPartitioner),如:
A_RDD = anRDD.map().partitionBy(new HashPartitioner(2))
B_RDD = A_RDD.aggregateByKey()
1)这是否与我保持原样一样有效,首先呢? aggregateByKey()将使用A_RDD中的hashPartitioner,对吧?
2)或者如果我在第一个示例中保留它,则aggregateByKey()将首先按键聚合每个分区,然后发送每个“聚合”(键,值)对更多有效的分区方式?
3)为什么不在RDD上进行map,flatMap和其他转换不能就如何动态分区(键,值)对进行论证? 我的意思是例如在每个元组的map()操作期间让我们说,=>将此元组也发送到特定分区 已由map e.x上的partitioner参数指定:map(,Partitioner)。
我试图抓住aggregateByKey()的概念它是如何工作的,但每当我想到这个时,就会出现一个新问题...... 提前谢谢。
答案 0 :(得分:1)
partitionBy
放在aggregateByKey
之前,它通常效率会低于aggregateByKey
。您可以有效地禁用地图侧合并。