首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Apache Spark中,为什么RDD.union不保留分区程序?

在Apache Spark中,为什么RDD.union不保留分区程序?
EN

Stack Overflow用户
提问于 2015-05-01 04:49:43
回答 1查看 20.2K关注 0票数 26

众所周知,Spark中的分区对任何“宽”操作都有巨大的性能影响,所以它通常是在操作中定制的。我正在使用以下代码进行实验:

val rdd1 =
  sc.parallelize(1 to 50).keyBy(_ % 10)
    .partitionBy(new HashPartitioner(10))
val rdd2 =
  sc.parallelize(200 to 230).keyBy(_ % 13)

val cogrouped = rdd1.cogroup(rdd2)
println("cogrouped: " + cogrouped.partitioner)

val unioned = rdd1.union(rdd2)
println("union: " + unioned.partitioner)

我发现在默认情况下,cogroup()总是生成带有自定义分区工具的RDD,但union()并非如此,它总是会恢复到默认状态。这是违反直觉的,因为我们通常假设PairRDD应该使用它的第一个元素作为分区键。有没有办法“强制”Spark合并2个PairRDD来使用相同的分区键?

EN

回答 1

Stack Overflow用户

发布于 2019-04-26 05:17:20

这不再是真的了。如果两个union具有完全相同的分区程序和分区数量,则RDD也将具有这些相同的分区。这是在https://github.com/apache/spark/pull/4629中引入的,并被合并到Spark 1.3中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29977526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档