我们在读取一些数据时,有时候知道每个分区的数据可以让我们有更好的判断
方法一. 利用rdd.saveAsTextFile(“./output”) 保存到本地
如图是本地的一个txt测试文件
方法二
object RddKey {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("Spark_RDD").setMaster("local[*]")
val sc: SparkContext = new SparkContext(conf);
// RDD设置了三个分区
val value: RDD[String] = sc.textFile("F:\\input\\wordcount", 3)
// mapPartitionsWithIndex有两个参数,一个是分区索引号,另外一个是分区数据迭代器
value.mapPartitionsWithIndex(
(partId, iter) => {
var map: mutable.Map[String, List[String]] = mutable.Map[String, List[String]]()
var part_name: String = "part_" + partId
map(part_name) = List[String]()
while (iter.hasNext) {
map(part_name) :+= iter.next() // :+= 集合追加
}
map.iterator
}
).foreach(arr => println(arr._1 + " " + arr._2))
}
}