当前位置:   article > 正文

实验三 RDD编程初级实践

实验三 RDD编程初级实践

1 实验目的

1、熟悉 Spark 的 RDD 基本操作及键值对操作;
2、熟悉使用 RDD 编程解决实际具体问题的方法

2 实验平台

1、Spark3.4.0 (Scala 版本为 2.12.17)
2、操作系统:Ubuntu16.04
3、Jdk版本:1.8或以上版本。

3 实验要求

1.每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。下面是输入文件和输出文件的一个样例,供参考。

Algorithm成绩:

小明 92

小红 87

小新 82

小丽 90

Database成绩:

小明 95

小红 81

小新 89

小丽 85

Python成绩:

小明 82

小红 83

小新 94

小丽 91

平均成绩如下:

    (小红,83.67)

    (小新,88.33)

    (小明,89.67)

    (小丽,88.67)

4 实验内容和步骤(操作结果要附图)

假设当前目录为/usr/local/spark/mycode/avgscore,在当前目录下新建一个目录mkdir -p src/main/scala,然后在目录/usr/local/spark/mycode/avgscore/src/main/scala下新建一个avgscore.scala

  1. import org.apache.spark.SparkConf
  2. import org.apache.spark.HashPartitioner
  3. import org.apache.spark.SparkContext
  4. import org.apache.spark.SparkContext._
  5. object AvgSore {
  6. def main(args: Array[String]) {
  7. val conf = new SparkConf().setAppName("AvgScore")
  8. val sc = new SparkContext(conf)
  9. val dataFile = "file:///home/hadoop/data/Algorithm.txt,file:///home/hadoop/data/Database.txt,file:///home/hadoop/data/Python.txt"
  10. val data = sc.textFile(dataFile,3)
  11. 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 => {
  12. var n = 0
  13. var sum = 0.0
  14. for(i <- x._2){
  15. sum = sum + i
  16. n = n +1
  17. }
  18. val avg = sum/n
  19. val formattedAvg = f"$avg%1.2f".toDouble
  20. (x._1, formattedAvg)
  21. })
  22. res.saveAsTextFile("file:///usr/local/spark/mycode/AvgScore/result")
  23. }
  24. }
  25. }

在目录/usr/local/spark/mycode/avgscore目录下新建simple.sbt

  1. name := "Simple Project"
  2. version := "1.0"
  3. scalaVersion := "2.12.17"
  4. libraryDependencies += "org.apache.spark" %% "spark-core" % "3.4.0"

进行打包

sudo /usr/local/sbt/sbt package

进行运行

/usr/local/spark/bin/spark-submit --class "AvgScore"  /usr/local/spark/mycode/avgscore/target/scala-2.12/simple-project_2.12-1.0.jar

5 实验总结

  • 总结所学的RDD编程基础知识和实践经验。
  • 强调继续学习和探索更高级的Spark编程概念和技术。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/749260
推荐阅读
相关标签
  

闽ICP备14008679号