Spark mapPartitionsWithIndex:标识分区

时间:2017-06-12 14:30:51

标签: scala apache-spark rdd hadoop-partitioning bigdata

识别分区:

mapPartitionsWithIndex(index, iter)

该方法导致将功能驱动到每个分区上。我知道我们可以使用" index"来跟踪分区。参数。

许多示例使用此方法使用" index = 0"删除数据集中的标头。条件。但是我们如何确保读取的第一个分区(转换,"索引"参数等于0)确实是标题。如果使用的话,它是随机的或基于分区器。

1 个答案:

答案 0 :(得分:4)

它是随机的还是基于分区器,如果使用的话?它不是随机的,而是分区号。您可以通过下面提到的简单示例来理解它

val base = sc.parallelize(1 to 100, 4)    
base.mapPartitionsWithIndex((index, iterator) => {

  iterator.map { x => (index, x) }

}).foreach { x => println(x) }
  

结果:(0,1)(1,26)(2,51)(1,27)(0,2)(0,3)(0,4)(1,28)(2,52)   (1,29)(0,5)(1,30)(1,31)(2,53)(1,32)(0,6)......