spark3.0教程:RDD算子分类:转换算子和行动算子

分类

RDD 算子有很多,主要分两类:

  • 转换:从一个RDD 转换生成另一个 RDD,其目的是为了 处理数据。转换算子是 惰性操作,只是定义了RDD,但并 没有立即执行
    如:map()、flatMap()

  • 行动(执行):有行动算子才会 让转换算子运行,即:触发任务的 调度 和作业的 执行,也就是能够触发Spark运行
    如:collect()、foreach、saveAsTextFile

例子

没有 行动算子,例子中的转换算子,即:map()算子不会运行,不会打印 1111

val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("mywordcount")

val sc: SparkContext = new SparkContext(conf)
val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4),3)
val resRDD = rdd.map(item => {
  println(1111)
  item
})
// resRDD.collect() // 注销此行代码,map()算子不会运行,不会打印1111
sc.stop()

转换算子分类

RDD 根据数据处理方式的不同将算子整体上分为:

  • 单 value 类型。有一个RDD

    • map()

    • mapPartitions()

    • mapPartitionsWithIndex()

    • flatMap()

    • glom()

    • groupBy()

    • filter()

    • sample()

    • distinct()

    • coalesce()

    • repartition()

    • sortBy()

  • 双 value 类型。需要2个RDD

    • intersection交集

    • union并集

    • subtract差集

    • zip拉链

  • Key-Value 类型。源RDD和返回RDD是key-value类型

    • partitionBy

    • reduceByKey

    • groupByKey

    • join

    • rightOuterJoin

    • leftOuterJoin

    • cogroup()

    • sortByKey()

行动算子操作

  • collect

  • reduce

  • count

  • take()

  • takeOrdered()

  • aggregate

  • fold

  • countByValue

  • countByKey

  • first

  • foreach

  • foreachPartition

保存

  • saveAsTextFile

  • saveAsObjectFile

  • saveAsSequenceFile


原文出处:/show_1IX1JWYZB4RI.html