大数据实验 实验六:Spark初级编程实践

Spark初级编程实践

实验环境:Windows 10 Oracle VM VirtualBox

虚拟机:cnetos 7

Hadoop 3.3

实验内容与完成情况:

1. 安装hadoop和spark

因为Hadoop版本为3.3所以在官网选择支持3.3的spark安装包

在这里插入图片描述

解压安装包到指定文件夹

在这里插入图片描述

配置spark-env.sh

在这里插入图片描述

启动成功

在这里插入图片描述

在这里插入图片描述

2. Spark读取文件系统的数据

(1) 在spark-shell中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数;

在这里插入图片描述

(2) 在spark-shell中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;

在这里插入图片描述

(3) 编写独立应用程序(推荐使用Scala语言),读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;通过sbt工具将整个应用程序编译打包成 JAR包,并将生成的JAR包通过 spark-submit 提交到 Spark 中运行命令。

编写程序

在这里插入图片描述

安装sbt

在这里插入图片描述

程序编译

在这里插入图片描述

使用命令/software/spark-3.4.0-bin-hadoop3/bin/spark-submit –class “hdfstest” /software/hdfstest/target/scala-2.12/a-simple-hdfs-test_2.12-1.0.jar >& 1 |grep The 运行jar包

在这里插入图片描述

运行成功

3. 编写独立应用程序实现数据去重

对于两个输入文件 A 和 B,编写 Spark 独立应用程序(推荐使用 Scala 语言),对两个文件进行合并,并剔除其中重复的内容,得到一个新文件 C。下面是输入文件和输出文件的一个样例,供参考。

输入文件 A 的样例如下:

20170101 x

20170102 y

20170103 x

20170104 y

20170105 z

20170106 z

输入文件 B 的样例如下:

20170101 y

20170102 y

20170103 x

20170104 z

20170105 y

根据输入的文件 A 和 B 合并得到的输出文件 C 的样例如下:

20170101 x

20170101 y

20170102 y

20170103 x

20170104 y

20170104 z

20170105 y

20170105 z

20170106 z

编写文件A B

在这里插入图片描述

配置编译选项

在这里插入图片描述

编译代码

在这里插入图片描述

使用/software/spark-3.4.0-bin-hadoop3/bin/spark-submit –class “RemDup” /software/RemDup/target/scala-2.12/remove-duplication_2.12-1.0.jar 命令运行jar包

运行

在这里插入图片描述

查看运行结果

在这里插入图片描述

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

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

Algorithm 成绩:

小明 92

小红 87

小新 82

小丽 90

Database 成绩:

小明 95

小红 81

小新 89

小丽 85

Python 成绩:

小明 82

小红 83

小新 94

小丽 91

平均成绩如下:

(小红,83.67)

(小新,88.33)

(小明,89.67)

(小丽,88.67)

编译被操作文件 Algorithm database python

在这里插入图片描述

编写代码文件

在这里插入图片描述

编写配置文件

在这里插入图片描述

程序打包

在这里插入图片描述

使用命令/software/spark-3.4.0-bin-hadoop3/bin/spark-submit –class “AvgScore” /software/AvgScore/target/scala-2.12/average-score_2.12-1.0.jar运行程序

在这里插入图片描述

查看结果在这里插入图片描述

出现的问题

问题一

运行start-all命令时spark报错

说缺少依赖

问题二

在etc/profile中更改完环境后

Source命令刷新文件仍然出现路径配置错误

在这里插入图片描述

问题三

在用sbt编译的过程中报错

在这里插入图片描述

解决方案

问题一

在下载安装包时版本选择错误

在这里插入图片描述

将安装包换为

在这里插入图片描述

问题二

因为之前开启了两个窗口进行命令操作

在这里插入图片描述

在一个窗口刷新在另一个窗口使用start-all命令

于是在同一个窗口source一下

在这里插入图片描述成功启动,问题解决

问题三

在这里插入图片描述

在这里插入图片描述

将编译的sbt文件配置改为启动spark-shell中现实的scala的版本号,不能使用,在etc/profile注册路径中的版本

完成编译

在这里插入图片描述

问题解决

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/e1fc915ab1.html