RDD算子——概念及部分操作

RDD 的算子

分类

RDD算子——概念及部分操作_第1张图片

特点

  • Spark 中所有的 Transformations 是 Lazy (惰性)的,它们不会立即执行获得结果,相反,它们只会记录在数据集上要应用的操
    作.只有当需要返回结果给 Driver 时,才会执行这些操作,通过 DAGScheduler 和 TaskScheduler 分发到集群中运行,这个特性
    叫做 惰性求值
  • 默认情况下,每一个Action运行的时候,其所关联的所有 Transformation RDD 都会重新计算,但是也可以使用 presist 方法将 RDD 持久化到磁盘或者内存中.
  • 这个时候为了下次可以更快的访问,会把数据保存到集群上,

针对KV 和 数字 类型的数据,Spark提供了什么操作

  1. 针对KV类型的数据,Spark提供了什么操作:

    键值型数据本质上就是一个二元元组, 键值对类型的 RDD 表示为 RDD[(K, V)]

    RDD 对键值对的额外支持是通过隐式支持来完成的, 一个 RDD[(K, V)], 可以被隐式转换为一个 PairRDDFunctions 对象, 从而调用其中的方法.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    既然对键值对的支持是通过 PairRDDFunctions提供的, 那么从 PairRDDFunctions中就可以看到这些支持有什么

    类别 算子
    聚合操作 reduceByKey
    foldByKey
    combineByKey
    分组操作 cogroup (不常见)
    groupByKey
    连接操作 join
    leftOuterJoin
    rightOuterJoin
    排序操作 sortBy
    sortByKey
    Action countByKey
    take
    collect
  2. 针对数字型的数据、spark提供了什么操作:

    对于数字型数据的额外支持基本上都是 Action 操作, 而不是转换操作

    算子 含义
    count 个数
    mean 均值
    sum 求和
    max 最大值
    min 最小值
    variance 方差
    sampleVariance 从采样中计算方差
    stdev 标准差
    sampleStdev 采样的标准差
    • code

      @Test
      def numberic(): Unit={
        val rdd = sc.parallelize(Seq(1, 2, 3, 4, 10, 20, 30, 50, 100))
        // 最大值
        println(rdd.max()) // 100
        // 最小值
        println(rdd.min()) // 1
        // 平均数
        println(rdd.mean()) // 24.444444444444443
        // 和
        println(rdd.sum()) // 220.0
        // ...........
      }
      

你可能感兴趣的:(Spark,大数据,spark,大数据)