可使用百度网盘获取Data01.txt数据文件
https://pan.baidu.com/s/1jBY8f9OXThmtfs0s5mV0ow&shfl=sharepset
注:代码还是自个敲一哈为好(。•ᴗ-)_,某些命令需要自行根据实际调整。仅给出部分命令,俺想耍去了
1.请根据给定的实验数据Data01.txt,在spark-shell中通过编程来计算以下内容
首先使用xftp将Data01.txt(某大学计算机系的成绩数据集)上传至master节点的/opt目录下
所有节点使用hadoop用户登录
su hadoop //切换hadoop用户
在master节点上分别启动hadoop集群和spark集群
/opt/hadoop/sbin/start-all.sh //启动hadoop集群
/opt/spark/sbin/start-all.sh //启动spark集群
在master节点上启动spark-shell终端
/opt/spark/bin/spark-shell --master yarn
另开一个master终端,将Data01.txt数据文件传输到各个子节点上的/opt目录下
scp /opt/Data01.txt slave1:/opt/
scp /opt/Data01.txt slave2:/opt/
scp /opt/Data01.txt slave3:/opt/
(1).该系总共有多少学生;
在spark-shell中依次执行如下命令求得该系共有265名学生
(2).该系共开设多少门课程;
执行如下命令求得该系共开设8门课程:
(3).Tom同学的总成绩平均分是多少;
执行如下命令求得Tom同学的总成绩平均分为30分:
(4).求每名同学的选修的课程门数;
执行如下命令求得每名同学的选修课数:
(5).该系DataBase课程共有多少人选修;
执行如下命令求得选修DataBase的总选修人数为126名:
(6).各门课程的平均分是多少;
执行如下命令求得各门成绩的平均分:
(7).使用累加器计算共有多少人选修了DataBase这门课;
执行如下命令使用累加器计算求得共有126人选修了DataBase这门课:
2.写独立应用程序实现数据去重
对于两个输入文件A和B,编写spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新的文件C。
在/opt目录下新建data文件夹用于存放数据文件A和B
mkdir /opt/data //创建数据文件目录data
创建新数据文件A
创建新数据文件B
在master节点中的hadoop根目录创建工程目录spark_1,及其子目录
cd ~ //进入当前用户根目录
mkdir -p spark_1/src/main/scala
在spark_1工程目录的子目录scala下编写实现数据去重的逻辑代码
vim ./spark_1/src/main/scala/remdup.scala
在该工程根目录下新建remdup.sbt脚本文件,版本号信息需与自身搭建的spark环境相同
vim ./spark_1/remduo.sbt
使用sbt工具对工程进行打包
/opt/sbt/bin/sbt package
将刚刚生成的jar包提交的spark中运行
/opt/spark/bin/spark-submit --class "RemDup" ~/spark_1/target/scala-2.11/remdup-project_2.11-1.0.jar
数据去重程序运行生成的结果文件在hdfs文件系统中,名为result,可在浏览器中打开查看
在终端查看hdfs中的结果文件内容,可见A和B数据文件内容已实现合并去重
/opt/hadoop/bin/hdfs dfs -cat /user/hadoop/result/part-00000
3.编写独立应用程序实现求平均值问题
每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。
在hadoop用户根目录下创建计算平均分的工程目录并编写逻辑代码
在工程根目录下创建工程脚本文件
使用sbt将工程进行打包
另开一个master终端进入opt目录新建data_2用于存放成绩文件
成绩文件Algorithm
成绩文件Database
成绩文件Python
在master节点上将jar包提交给spark运行
在浏览器中查看生成的结果文件result_2
在终端中查看结果文件的平均分内容信息
先后关闭spark集群和hadoop集群
至此,实验结束。