mapPartitionsWithIndex(func) 案例
- 作用:類似於mapPartitions,但func帶有一個整數參數表示分片的索引值,因此在類型爲T的RDD上運行時,func的函數類型必須是(Int, Interator[T]) => Iterator[U];
- 需求:創建一個RDD,使每個元素跟所在分區形成一個元組組成一個新的RDD
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Spark24 extends App {
val config: SparkConf = new
SparkConf().setMaster("local[4]").setAppName("WordCount")
val sc = new SparkContext(config)
private val listRDD: RDD[Int] = sc.makeRDD(1 to 10)
private val tupleRDD: RDD[(Int,String)] = listRDD.mapPartitionsWithIndex {
case (num, datas) => {
datas.map((_, "分區號:" + num))
}
}
}
(1,分區號:0)
(2,分區號:0)
(3,分區號:1)
(4,分區號:1)
(5,分區號:1)
(6,分區號:2)
(7,分區號:2)
(8,分區號:3)
(9,分區號:3)
(10,分區號:3)