spark rdd 遍历分区输出分区内容

spark | 2019-09-13 10:02:39

刚接触spark的时候,总是想把rdd每个分区的数据打印出来,有时候是想看默认分区是啥样子的,有时候是想看rePartion到底起作用了没。

操作分区主要有mapPartitionsmapPartitionsWithIndex方法,mapPartitionsWithIndex提供了分区的索引(代码中partid)。


遍历分区输出分区内容的代码:

val rdd = sc.parallelize(1 to 8,3)
rdd.mapPartitionsWithIndex{
    (partid,iter)=>{
        var part_map = scala.collection.mutable.Map[String,List[Int]]()
        var part_name = "part_" + partid
        part_map(part_name) = List[Int]()
        while(iter.hasNext){
            part_map(part_name) :+= iter.next()//:+= 列表尾部追加元素
        }
        part_map.iterator
    }
}.collect

输出:

res0: Array[(String, List[Int])] = Array((part_0,List(1, 2)), (part_1,List(3, 4, 5)), (part_2,List(6, 7, 8)))


登录后即可回复 登录 | 注册
    
关注编程学问公众号