本文共 600 字,大约阅读时间需要 2 分钟。
刚接触spark的时候,总是想把rdd每个分区的数据打印出来,有时候是想看默认分区是啥样子的,有时候是想看rePartion到底起作用了没。
操作分区主要有mapPartitions和mapPartitionsWithIndex方法,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)))
转载地址:http://kdncl.baihongyu.com/