2020寒假学习记录(12)——实验4-3

一、编写独立应用程序实现求平均值问题

每个输入文件表示班级学生某个学科的成绩,每行内容那个由两个字段组成,第一个使学生名字,第二个是学生成绩;编写spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。

供参考。
Algorithm 成绩:
小明 92
小红 87
小新 82
小丽 90
Database 成绩:
小明 95
小红 81
小新 89
小丽 85
Python 成绩:
小明 82
小红 83
小新 94
小丽 91
平均成绩如下:
(小红,83.67)
(小新,88.33)
(小明,89.67)
(小丽,88.67)
 
源代码如下:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.HashPartitioner

object SimpleApp
{
      def main(args:Array[String])
{
      val conf = new SparkConf().setAppName("SimpleApp")
val sc = new SparkContext(conf)
      val dataFile = "file:///usr/local/spark/input2"
      val data = sc.textFile(dataFile,3)

      val res=data.filter( _.trim().length>0).map(line=>(line.split(" ")(0).trim(),line.split(" ")(1).trim().toInt)).partitionBy(new HashPartitioner(1)).groupByKey().map(x=>{
var n=0
var sum=0.0
      for(i<-x._2){
      sum=sum+i
      n=n+1
      }

      val avg=sum/n 

      val format=f"$avg%1.2f".toDouble
      (x._1,format)})

      res.saveAsTextFile("/home/hadoop/result")
}
}

posted @ 2020-02-12 17:02  祺&Qi  阅读(742)  评论(0编辑  收藏  举报