mapPartitionsWithIndex
有参数preservesPartitioning
,我不知道如何设置它。
我做了一个测试:
// partitionedRDD's type is RDD[(String, String)]
partitionedRDD.mapPartitionsWithIndex((index, iter) => {
iter.map(_._1)
}, args(2).toBoolean).saveAsTextFile(args(3))
无论我将preservesPartitioning
设置为false
还是true
,RDD分区都没有更改。为什么呢?
如果我想要更改分区,我应该为preservesPartitioning
设置什么值?
答案 0 :(得分:4)
我认为你对preservesPartitioning意义感到困惑。通过将其设置为true,您不是要对Spark'请保留部分'你告诉它我有一个保留键的功能,而RDD是一对RDD'。
来自spark doc:
preservesPartitioning
表示输入函数是否保留了分区器,除非这是一对RDD并且输入函数不修改密钥,否则它应该是false
。
在您的情况下,您有一对RDD并且该函数不会修改该键,因此该标志应为true。