我有一个DataFrame,其中一个列名为problem_id,包含一个键,该键标识整个数据集的一小部分。
我不清楚keyBy + partitionBy(N) + mapPartitions是否会将数据集划分为N=|problem_id|分区,这样我就可以在每个定义的分区上并行执行一些代码。
否则,我如何才能达致这个结果呢?基本上,我需要对共享同一个problem_id的所有行应用一个函数。在sparkR中有gapply函数,但是它在Scala或Python中的等价性是什么?
发布于 2017-01-26 18:33:17
默认分区器(HashPartitioner)是一个满射,因此可以将多个键散列到同一个分区。
gapply在SparkR中的直接等价形式是groupBy,其次是mapValues。repartitionAndSortWithinPartitions:
(rdd .repartitionAndSortWithinPartitions() .mapPartitions(.))
记录下钥匙的变化情况。https://stackoverflow.com/questions/41878477
复制相似问题