24 - Spark - mapPartitionsWithIndex算子

mapPartitionsWithIndex(func) 案例

  1. 作用:類似於mapPartitions,但func帶有一個整數參數表示分片的索引值,因此在類型爲T的RDD上運行時,func的函數類型必須是(Int, Interator[T]) => Iterator[U];
  2. 需求:創建一個RDD,使每個元素跟所在分區形成一個元組組成一個新的RDD

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark24 extends App {
  // 設定Spark計算環境
  val config: SparkConf = new 
  // 設置了四個分區
  SparkConf().setMaster("local[4]").setAppName("WordCount")

  // 創建上下文
  val sc = new SparkContext(config)

  // mapPartitions
  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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章