RDD 行动算子

在 Apache Spark 中,RDD(弹性分布式数据集)是核心数据结构之一。行动算子会触发实际的计算并返回结果或执行某些操作。以下是 Scala 中常见的 RDD 行动算子:

1. collect()

  • 将 RDD 中的所有数据收集到驱动程序中,并返回一个数组。
  • 注意:如果数据集很大,可能会导致内存不足。
val data: Array[T] = rdd.collect()

2. count()

  • 返回 RDD 中元素的总数。
val count: Long = rdd.count()

3. first()

  • 返回 RDD 中的第一个元素。
val firstElement: T = rdd.first()

4. take(n)

  • 返回 RDD 中的前 n 个元素。
val topN: Array[T] = rdd.take(5)

5. takeSample(withReplacement, num, seed)

  • 从 RDD 中随机采样 num 个元素。
  • withReplacement:是否允许重复采样。
  • seed:随机种子。
val sample: Array[T] = rdd.takeSample(false, 10, 42)

6. reduce(func)

  • 使用指定的函数对 RDD 中的元素进行聚合。
  • 函数必须是可交换和可结合的。
val total: T = rdd.reduce((x, y) => x + y)

7. fold(zeroValue)(func)

  • 类似于 reduce,但可以提供一个初始值 zeroValue
val total: T = rdd.fold(0)((x, y) => x + y)

8. aggregate(zeroValue)(seqOp, combOp)

  • 对 RDD 中的元素进行聚合,允许使用不同的初始值和聚合函数。
  • seqOp:分区内的聚合操作。
  • combOp:分区间的聚合操作。
val result = rdd.aggregate(0)((acc, value) => acc + value, (acc1, acc2) => acc1 + acc2)

9. foreach(func)

  • 对 RDD 中的每个元素应用函数 func,通常用于副作用操作(如打印或保存数据)。
rdd.foreach(println)

10. saveAsTextFile(path)

  • 将 RDD 保存为文本文件,每个元素为一行。
rdd.saveAsTextFile("output/path")

11. saveAsObjectFile(path)

  • 将 RDD 保存为序列化的对象文件。
rdd.saveAsObjectFile("output/path")

12. countByKey()

  • 仅适用于键值对 RDD,返回每个键的计数。
val counts: Map[K, Long] = rdd.countByKey()

13. countByValue()

  • 返回 RDD 中每个唯一值的计数。
val counts: Map[T, Long] = rdd.countByValue()

14. takeOrdered(n)(ordering)

  • 返回 RDD 中按指定顺序排序的前 n 个元素。
val topN: Array[T] = rdd.takeOrdered(5)(Ordering[Int].reverse)

15. top(n)(ordering)

  • 返回 RDD 中按指定顺序排序的前 n 个元素(默认降序)。
val topN: Array[T] = rdd.top(5)

16. min()max()

  • 返回 RDD 中的最小值和最大值。
val minValue: T = rdd.min()
val maxValue: T = rdd.max()

17. histogram(buckets)

  • 计算 RDD 中元素的直方图。
val histogram: (Array[Double], Array[Long]) = rdd.histogram(buckets)

18. lookup(key)

  • 仅适用于键值对 RDD,返回与指定键关联的所有值。
val values: Seq[V] = rdd.lookup(key)

你可能感兴趣的:(RDD,Spark)