美文网首页
Spark学习(六):map & mapPartitions

Spark学习(六):map & mapPartitions

作者: CocoMama190227 | 来源:发表于2019-03-04 15:22 被阅读0次

对于一些没有用过的函数或者操作,看文字描述总是觉得很晦涩,很难理解,所以学习的时候我比较倾向于先从小例程入手,以便有直观的理解。关于这两个函数网上的介绍很多,但找了很久才找到我认为更方便理解的例程和描述,我把原文1种的例程做了一点修改,并摘录了原文2的文字描述。

map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。任何原RDD中的元素在新RDD中都有且只有一个元素与之对应
mapPartitions是map的一个变种。map的输入函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区,也就是把每个分区中的内容作为整体来处理的。

代码如下:

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

object mapAndMapPartitions {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("mapAndMapPartitions").setMaster("local")
    var sc   = new SparkContext(conf)

    var aa   = sc.parallelize(1 to 7, 2) // RDD有两个分区
    aa.foreach(println) // output: 1 2 3 & 4 5 6 7 , 分别为两个区的元素

    println("1.map------------------------------------------")
    val aa_res  = aa.map( x => x + 1)
    println("Partitions' number: " + aa_res.getNumPartitions)  // 获取partitions数目, output: 2
    println("map: " + aa_res.collect().mkString(" "))

    println("2.mapPartitions--------------------------------")
    var cc_ref = aa.mapPartitions( x => {
      var result = List[Int]()
      var cur = 0
      while(x.hasNext){
        cur += x.next()
      }
      result.::(cur).iterator
    })
    println("mapPartitions: " + cc_ref.collect().mkString(" "))  
  }
}

输出结果:

1
2
3
4
5
6
7
1.map------------------------------------------
map: 2 3 4 5 6 7 8
2.mapPartitions--------------------------------
mapPartitions: 6 22

2.mapPartitions的结果分别为6和22,因为mapPartitions分别针对每一个分区做求和操作

相关文章

  • Spark学习(六):map & mapPartitions

    对于一些没有用过的函数或者操作,看文字描述总是觉得很晦涩,很难理解,所以学习的时候我比较倾向于先从小例程入手,以便...

  • spark第一天

    map方法 fillter flatmap mapPartitions mapPartitions是map的一个变...

  • spark优化技巧(四)

    算子调优 4.1 MapPartitions提升Map类操作性能 spark中,最基本的原则,就是每个task处理...

  • Spark调优(4—6)

    4、算子调优 4.1、MapPartitions提升Map类操作性能 spark中,最基本的原则,就是每个task...

  • mapPartitions 使用

    Spark中的map函数是将每个rdd都进行自定义函数处理mapPartitions则是将多个rdd进行分区,对每...

  • 2020-11-24-Spark-3(Spark-Core)

    RDD算子 map mapPartitions mapPartitionsWithIndex 1.map算子演...

  • spark之旅-2.spark 算子 python

    map flatMap glom mapPartitions mapPartitionsWithIndex get...

  • map 和 mapPartitions

    map:遍历算子,可以遍历RDD中每一个元素,遍历的单位是每条记录 mapPartitions遍历算子,可以改变R...

  • Spark-算子-transerformation

    Map[一对一] flatMap[一对多] mapPartitions mapPartitionsWithInde...

  • mapPartitions

    mapPartitions是map的一个变种。map的输入函数是应用于RDD中每个元素,而mapPartition...

网友评论

      本文标题:Spark学习(六):map & mapPartitions

      本文链接:https://www.haomeiwen.com/subject/othiuqtx.html