如何在Spark中使用函数mapPartitionsWithIndex?

时间:2016-06-27 08:15:00

标签: apache-spark

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设置什么值?

1 个答案:

答案 0 :(得分:4)

我认为你对preservesPartitioning意义感到困惑。通过将其设置为true,您不是要对Spark'请保留部分'你告诉它我有一个保留键的功能,而RDD是一对RDD'。

来自spark doc:

  

preservesPartitioning表示输入函数是否保留了分区器,除非这是一对RDD并且输入函数不修改密钥,否则它应该是false

在您的情况下,您有一对RDD并且该函数不会修改该键,因此该标志应为true。