0


spark:计算不同分区中相同key的平均值(入门级-简单实现)

计算不同分区中相同key的平均值。

aggregateByKey实现、combineByKey实现。

aggregateByKey

  1. import org.apache.spark.{SparkConf, SparkContext}
  2. object RDD_Operator_Transform_aggregateByKey {
  3. def main(args: Array[String]): Unit = {
  4. //TODO 创建环境
  5. val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")
  6. val sc = new SparkContext(sparkConf)
  7. //TODO RDD算子——key-value——aggregateByKey
  8. //计算不同分区中相同key的平均值
  9. val rdd = sc.makeRDD(List(
  10. ("A", 1), ("B", 2), ("C", 3), ("D", 4), ("A", 5), ("B", 6), ("C", 7), ("A", 8)
  11. ), 2)
  12. val newRDD = rdd.aggregateByKey((0, 0))(
  13. (t, v) => {
  14. (t._1 + v, t._2 + 1)
  15. },
  16. (t1, t2) => {
  17. (t1._1 + t2._1, t1._2 + t2._2)
  18. }
  19. )
  20. val RDD1 = newRDD.mapValues {
  21. case (num, c) => {
  22. num / c
  23. }
  24. }
  25. RDD1.collect().foreach(println)
  26. //TODO 关闭环境
  27. sc.stop()
  28. }
  29. }

combineByKey

  1. import org.apache.spark.{SparkConf, SparkContext}
  2. object RDD_Operator_Transform_combineByKey {
  3. def main(args: Array[String]): Unit = {
  4. //TODO 创建环境
  5. val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")
  6. val sc = new SparkContext(sparkConf)
  7. //TODO RDD算子——key-value——combineByKey
  8. //计算不同分区中相同key的平均值
  9. val rdd = sc.makeRDD(List(
  10. ("A", 1), ("B", 2), ("C", 3), ("D", 4), ("A", 5), ("B", 6), ("C", 7), ("A", 8)
  11. ), 2)
  12. //第一个:将相同key的第一个数据进行结构的转换
  13. //第二个:分区内的计算规则
  14. //第三个:分区间的计算规则
  15. val newRDD = rdd.combineByKey(
  16. v => (v, 1),
  17. (t: (Int, Int), v) => {
  18. (t._1 + v, t._2 + 1)
  19. },
  20. (t1: (Int, Int), t2: (Int, Int)) => {
  21. (t1._1 + t2._1, t1._2 + t2._2)
  22. }
  23. )
  24. val RDD1 = newRDD.mapValues {
  25. case (num, c) => {
  26. num / c
  27. }
  28. }
  29. RDD1.collect().foreach(println)
  30. //TODO 关闭环境
  31. sc.stop()
  32. }
  33. }

标签: spark 大数据

本文转载自: https://blog.csdn.net/qq_55906442/article/details/125962090
版权归原作者 一个人的牛牛 所有, 如有侵权,请联系我们删除。

“spark:计算不同分区中相同key的平均值(入门级-简单实现)”的评论:

还没有评论