我想在本地合并已排序的分区(在驱动程序上)。
我对创建.mapPartitionsToPair()
的数据Iterable<Tuple2<D,X>>
D
,其中X
是一种有排序的类型(比方说某种日期),D
是一种类型有一些合并规则。结果按D
唯一排序。
我需要将最终结果作为这些分区的缩减,也可以{{1}}唯一排序。是否有任何本地减少依赖于按键排序的输入?我可以使用任何其他方法来实现我的目标吗?
我使用的是Spark 1.1.0。
答案 0 :(得分:1)
最简单的解决方案是sortByKey()
然后collect()
。它没有使用数据的已排序属性,但排序是可扩展的fast,并且很容易做到。
但是如果你真的想依赖已经排序的属性,请使用glom()
然后使用collect()
来获取分区列表。然后合并排序的列表,例如与Guava的Iterators.mergeSorted()。