文章目录一、提出任务二、准备工作一启动HDFS服务二启动Spark服务三、实现步骤一一启动HDFS服务 二启动Spark服务 三、实现步骤 一在Spark Shell里完成任务 二编写Scala程序完成任务 1、创建
- 一在Spark Shell里完成任务
- 二编写Scala程序完成任务
-
- 1、创建Maven项目 - RDDDemo
- 2、添加对hadoop、scala和spark的依赖
- 3、给Maven项目配置Scala SDK
- 4、创建CalculateSum单例对象
- 5、运行程序查看结果
- 6、安装配置scala-2.12.14
- 7、更改项目使用的Scala SDK
- 8、将项目打成jar包 - RDDDemo.jar
- 9、将RDDDemo.jar包上传到虚拟机
- 10、将jar包提交到Spark服务器运行
- 11、在HDFS上查看程序运行结果
一、提出任务
- 针对成绩表计算每个学生总分
姓名
语文
数学
英语
张钦林
78
90
76
陈燕文
95
88
98
卢志刚
78
80
60
二、准备工作
一启动HDFS服务
- 执行命令start-dfs.sh
二启动Spark服务
- 进入Spark的sbin目录执行命令./start-all.sh
三、实现步骤
一在Spark Shell里完成任务
- 创建成绩列表scores基于成绩列表创建rdd1对rdd1按键归约得到rdd2然后查看rdd2内容
二编写Scala程序完成任务
1、创建Maven项目 - RDDDemo
- 设置GroupId与ArtifactId
- 设置项目名称与项目保存位置
- 单击【Finish】按钮
2、添加对hadoop、scala和spark的依赖
-
在pom.xml文件里添加对hadoop、scala和spark的依赖
4.0.0
net.hw.rddRDDDemo1.0-SNAPSHOTorg.apache.hadoophadoop-client2.7.1org.scala-langscala-library2.12.14org.apache.sparkspark-core_2.122.4.4
3、给Maven项目配置Scala SDK
- 我们已经安装了scala-sdk_2.13.8
4、创建CalculateSum单例对象
-
创建net.hw.rdd包在包里创建CalculateSum单例对象
package net.hw.rdd
import org.apache.spark.{SparkConf, SparkContext}
/**
- 功能计算学生总分
- 作者华卫
- 日期2022年03月13日 */ object CalculateSum { def main(args: Array[String]): Unit { // 创建Spark配置对象 val conf new SparkConf() conf.setAppName(“CalculateSum”) conf.setMaster(“spark://master:7077”) conf.set(“spark.testing.memory”, “2147480000”) // 基于配置创建Spark上下文 val sc new SparkContext(conf) // 创建成绩列表 val scores List((“张钦林”, 78), (“张钦林”, 90), (“张钦林”, 76), (“陈燕文”, 95), (“陈燕文”, 88), (“陈燕文”, 98), (“卢志刚”, 78), (“卢志刚”, 80), (“卢志刚”, 60)) // 基于成绩列表创建rdd1 val rdd1 sc.parallelize(scores) // 对rdd1按键归约得到rdd2统计学生总分 val rdd2 rdd1.reduceByKey((x, y) > x y) // 将rdd2内容保存到HDFS rdd2.saveAsTextFile(“hdfs://master:9000/park/result”) } }
5、运行程序查看结果
- 运行程序CalculateSum结果报错了
- 出错的原因在于spark-2.4.4的内核是spark-core_2.12不支持我们安装的Scala版本scala-2.13.8
- 下载https://downloads.lightbend.com/scala/2.12.14/scala-2.12.14.zip
6、安装配置scala-2.12.14
- 2.4.x的spark Longrightarrow 选择2.12.x的scala
- 解压到指定位置比如C盘根目录
- 修改Scala环境变量SCALA_HOME的值
- 在命令行启动Scala查看其版本
7、更改项目使用的Scala SDK
- 打开项目结构窗口将项目使用的Scala SDK改成scala-sdk-2.12.14
8、将项目打成jar包 - RDDDemo.jar
- 利用IDEA将项目RDDDemo打成jar包
9、将RDDDemo.jar包上传到虚拟机
- 将RDDDemo.jar包上传到master虚拟机
10、将jar包提交到Spark服务器运行
- 执行命令spark-submit --class net.hw.rdd.CalculateSum ./RDDDemo.jar
11、在HDFS上查看程序运行结果
- 利用Hadoop的WebUI查看/park/result目录
- _SUCCESS表明程序运行成功
- 有两个结果文件part-00000和part-00001
- 执行命令hdfs dfs -getmerge /park/result /home/result.txt将两个结果文件合并下载到本地/home/result.txt
- 查看本地结果文件/home/result.txt