一、实验概述:

【实验目的】

  1. 掌握Spark计算环境的搭建方法;
  2. 掌握Scala/Python语言下的Spark基本程序设计方法。

【实验要求】

  1. 保存程序,并自行存档;
  2. 最终的程序都必须经过测试,验证是正确的;
  3. 认真记录实验过程及结果,回答实验报告中的问题。

【实施环境】(使用的材料、设备、软件)
Linux操作系统环境,VirtualBox虚拟机,Hadoop、Spark等程序。

二、实验内容

第1题 Spark计算环境搭建
【实验内容】
(1) 参考课程实验教材和Spark官网资料,在Linux系统中搭建Spark计算环境;
(2) 选择Scala或Python语言,搭建编程环境。

【实验结果】(步骤、记录、数据、程序等)
请提供相应界面截图证明。

回答:

1).搭建spark计算环境
1.进入spark官网,下载安装包

在这里插入图片描述
在这里插入图片描述
2.将解压后的文件夹重命名为spark,并授权,保存配置备份文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.修改配置文件
在这里插入图片描述
在这里插入图片描述
4.验证是否安装成功
在这里插入图片描述
通过grep命令过滤筛选信息
在这里插入图片描述
启动spark shell
在这里插入图片描述
5.测试并退出
在这里插入图片描述
在这里插入图片描述

第2题 Spark环境下的Pi值计算
【实验内容】
(1) 使用Spark shell的自带示例程序SparkPi,计算圆周率;
(2) 使用Scala或Python语言,编程实现圆周率Pi的计算。

【实验结果】(步骤、记录、数据、程序等)
请提供相应Shell界面、程序代码和运行效果截图证明。

回答:
1).安装python及jupyter
①安装aptitude

在这里插入图片描述
②安装python3及第三方工具
在这里插入图片描述
在这里插入图片描述
③python安装成功
在这里插入图片描述
④安装jupyter及findspark
在这里插入图片描述
在这里插入图片描述
⑤启动jupyter
在这里插入图片描述
在这里插入图片描述
2).使用shell命令计算
在这里插入图片描述
3).使用python计算
在jupyter notebook中桌面目录下新建python3程序

在这里插入图片描述
在这里插入图片描述

第3题 Spark环境下的WordCount计算实验
【实验内容】
使用使用Scala或Python语言,读取Linux系统中的任意文本文件,编程实现Spark环境下的WordCount计算。

【实验结果】(步骤、记录、数据、程序等)
请提供相应程序代码和运行效果截图证明。

回答:
在这里插入图片描述

第4题 Spark SQL计算实验
【实验内容】
(1) 在Linux环境下建立包含“学号(ID)”、“姓名(Name)”、“课程(Course)”的JSON文件,并录入相应数据;
(2) 使用Spark SQL编程读取上述JSON文件,并显示其中内容;
(3) 使用SparkSQL编程实现从上述JSON文件中选择并显示“姓名”和“课程”相应信息;
(4) 使用SparkSQL编程实现从上述JSON文件中按“姓名”的groupBy操作;
(5) 使用Spark SQL将上述JSON文件中内容封装为临时视图,并调用SQL语句执行数据检索,返回所有的数据。

【实验结果】(步骤、记录、数据、程序等)
请提供相应程序界面截图证明。

回答:
1 在桌面新建student.txt,在录入相关数据后将后缀名改为.json
在这里插入图片描述
2.启动jupyter notebook,在桌面新建python3程序,命名为experiment05
在这里插入图片描述
显示姓名和课程
在这里插入图片描述
按姓名的groupBy操作
在这里插入图片描述
设置临时视图
在这里插入图片描述

以下为scala实现

2.1 启动spark shell
在这里插入图片描述

2.2 创建dataFrame
在这里插入图片描述
2.3 定义一个临时表student并查询所有数据
在这里插入图片描述
3 显示名称和科目
在这里插入图片描述
4 根据名称排序
在这里插入图片描述

第5题 Spark Streaming计算实验
【实验内容】
使用Spark Streaming,编程实现针对Linux某一目录下文件流的WordCount计算。

【实验结果】(步骤、记录、数据、程序等)
请提供相应程序和运行界面截图证明。

回答:
在这里插入图片描述
在这里插入图片描述

第6题 Spark的基本机器学习计算实验(选做) 【实验内容】 结合课程讲授视频和其它相关资料,调用SparkMLLib库相应的API,实现KMeans的聚类计算。

【实验结果】(步骤、记录、数据、程序等)
请提供相应代码和运行界面截图证明。

回答:
1.在桌面新建txt文档
在这里插入图片描述
2.安装numpy
在这里插入图片描述
3.
在这里插入图片描述

# 训练数据
parsedData = data.map(lambda line: array([float(x) for x in line.split(' ')]))
print(parsedData.collect())
clusters = KMeans.train(parsedData, k=2, maxIterations=10, initializationMode="random")
# k 表示期望的聚类的个数。
# maxInterations 表示方法单次运行最大的迭代次数。
# runs–此参数自Spark 2.0.0起没有任何影响
# initializationMode 表示初始聚类中心点的选择方式, 目前支持随机选择或者 K-means||方式。默认是 K-means||。

# 求方差之和
def error(point):
    center = clusters.centers[clusters.predict(point)]
    return sqrt(sum([x**2 for x in (point - center)]))
WSSSE = parsedData.map(lambda point: error(point)).reduce(lambda x, y: x+y)
print("Within Set Sum of Squared Error = " + str(WSSSE))

在这里插入图片描述
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐