- 一、提出任务
- 二、完成任务
- (一)新建Maven项目
- (二)添加相关依赖和构建插件
- (三)创建日志属性文件
- (四)创建分组排行榜单例对象
- (五)本地运行程序,查看结果
- (六)交互式操作查看中间结果
- 分组求TopN是大数据领域常见的需求,主要是根据数据的某一列进行分组,然后将分组后的每一组数据按照指定的列进行排序,最后取每一组的前N行数据。
- 进入/home目录,创建grades.txt文件,上传到HDFS上/input目录
-
设置项目信息(项目名、保存位置、组编号、项目编号)
-
单击【Finish】按钮
-
将java目录改成scala目录
- 在pom.xml文件里添加依赖与Maven构建插件
(三)创建日志属性文件4.0.0 net.qzj.rdd GradeTopN1.0-SNAPSHOT org.scala-lang scala-library2.11.12 org.apache.spark spark-core_2.112.1.1 src/main/scala org.apache.maven.plugins maven-assembly-plugin3.3.0 jar-with-dependencies make-assembly package single net.alchim31.maven scala-maven-plugin3.3.2 scala-compile-first process-resources add-source compile scala-test-compile process-test-resources testCompile
- 在资源文件夹里创建日志属性文件 - log4j.properties
- 在net.qzj.rdd包里创建GradeTopN单例对象
- 在控制台查看输出结果
1.读取成绩文件得到RDD
- 执行命令:val lines = sc.textFile("hdfs://master:9000/input/grades.txt")
2.利用映射算子生成二元组构成的RDD
val grades = lines.map(line => {
val fields = line.split(" ")
(fields(0), fields(1))
})
- 执行上述代码
3.按键分组得到新的二元组构成的RDD
- 执行命令:val groupGrades = grades.groupByKey()
4.按值排序,取前三
- 执行代码
5.按指定格式输出结果
- 执行代码



