AggregateByKey分区?(AggregateByKey Partitioning?)

2019-09-26 21:36发布

我有 :

A_RDD = anRDD.map()

B_RDD = A_RDD.aggregateByKey()

好吧,我的问题是:

如果我把partitionBy(新HashPartitioner)A_RDD之后,如:

A_RDD = anRDD.map().partitionBy(new HashPartitioner(2))

B_RDD = A_RDD.aggregateByKey()

1)请问这是相同有效,因为如果我离开它,因为它是,摆在首位? aggregateByKey()将使用hashPartitioner从A_RDD,对不对?

2)或者如果我在第一个例子离开它,aggregateByKey()将重点首先汇总每个分区,然后发送每一个 “聚合”(键,值)对以更有效的方式,以正确的分区?

3)为什么不映射,flatMap等变换的RDDS不能采取对如何划分(键,值)对飞对的说法? 我的意思地图()操作过程中,例如在每一个元组可以说,=>也该元组发送到已经在地图上指定的前一个分区的参数特定分区:地图(,分区程序)。

我试图把握aggregateByKey()它是如何工作的概念,但每次我想我这时候,一个新的问题出现了...在此先感谢。

Answer 1:

  • 如果你把partitionBy之前aggregateByKey它通常会比低效率aggregateByKey孤单。 将有效地禁用地图侧相结合。
  • 如果你离开会有地图边结合起来,这是通常更有效。
  • 因为没有数据移动非互换操作不采取分区。 操作每台机器上本地执行。


文章来源: AggregateByKey Partitioning?