mapPartitionsWithIndex既可以拿到分区的迭代器,又可以拿到分区编号。
我们如果要使用这个方法的话,还需要传入一个函数,参数为一个int值一个迭代器,然后这个方法就会将分区编号传给int值,将这个分区编号中的值传入迭代器,我们对这些数据操作之后同样应该返回一个迭代器。
val arr = Array(1,2,3,4,5,6,7,8,9)
val rdd1 = sc.parallelize(arr,2)
def func1(index:Int,iter:Iterator[Int]) : Iterator[String] = {
iter.toList.map(x => "[partID:"+index+",value:"+x+"]").iterator
}
rdd1.mapPartitionsWithIndex(func1).collect