Map

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


//map(func)
object rdd2 {
  def main(args: Array[String]): Unit = {
    //本地模式
    val conf: SparkConf = new SparkConf().setAppName("My scala word count").setMaster("local")

    //创建spark上下文对象
    val sc = new SparkContext(conf)


    //1)map对所有数据进行操作,每次处理一条数据
    val listRDD: RDD[Int] = sc.makeRDD(1 to 10,2)
    val mapRDD: RDD[Int] = listRDD.map(data=>data*2)
    mapRDD.collect().foreach(println)


    //2)mapPartions对所有分区进行操作
    //mapPartitions效率比map高
    //mapPartitions每次处理一个分区的数据,这个分区的数据处理完后,原RDD中分区的数据才能释放,可能会发生内存溢出,OOM,建议内存空间较大时使用
    val mapPartitionsRDD: RDD[Int] = listRDD.mapPartitions(datas => {
      datas.map(data=>data*2)
    })

    mapPartitionsRDD.collect().foreach(println)

    //3)mapPartitionsWithIndex算子,分区号
    val tupleRDD: RDD[(Int, Int)] = listRDD.mapPartitionsWithIndex {
      case (num, datas) => {
        datas.map(data => (data, num))
      }
    }
    tupleRDD.collect().foreach(println)




  }


}

 

posted on 2020-09-18 15:18  happygril3  阅读(186)  评论(0)    收藏  举报

导航