Spark求平均成绩–Scala
数据–score下的三个文件
张三,78
李四,89
王五,96
赵六,67
张三,80
李四,82
王五,84
赵六,86
张三,88
李四,99
王五,70
赵六,77
代码
map之后首先使用groupBykey进行聚合操作,在map进行平均值的计算,最后进行格式化输出
package com.zyy.spark.core
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
object ScoreAvg {
def main(args: Array[String]): Unit = {
val conf:SparkConf = new SparkConf().setMaster("local").setAppName("平均分统计")
val sc = new SparkContext(conf)
sc.setLogLevel("ERROR")
val fileRDD:RDD[String] = sc.textFile("D:\\score")
fileRDD.map(x=>(x.split(",")(0),x.split(",")(1).toDouble)).groupByKey().map(x=> {
val avg=x._2.sum/x._2.size
val format=f"$avg%.2f"
(x._1,format)
}).foreach(println)
sc.stop()
}
}
输出结果
(李四,90.00)
(王五,83.33)
(张三,82.00)
(赵六,76.67)