一、实验概述:

【实验目的】

  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官网,下载安装包

spark实验心得 spark实验报告_spark


spark实验心得 spark实验报告_spark实验心得_02


2.将解压后的文件夹重命名为spark,并授权,保存配置备份文件

spark实验心得 spark实验报告_数据_03


spark实验心得 spark实验报告_spark实验心得_04


spark实验心得 spark实验报告_spark实验心得_05


spark实验心得 spark实验报告_spark实验心得_06


3.修改配置文件

spark实验心得 spark实验报告_spark_07


spark实验心得 spark实验报告_spark实验心得_08


4.验证是否安装成功

spark实验心得 spark实验报告_JSON_09


通过grep命令过滤筛选信息

spark实验心得 spark实验报告_JSON_10


启动spark shell

spark实验心得 spark实验报告_数据_11


5.测试并退出

spark实验心得 spark实验报告_spark_12


spark实验心得 spark实验报告_数据_13

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

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

回答:

1).安装python及jupyter
①安装aptitude

spark实验心得 spark实验报告_JSON_14


②安装python3及第三方工具

spark实验心得 spark实验报告_spark_15


spark实验心得 spark实验报告_JSON_16


③python安装成功

spark实验心得 spark实验报告_spark实验心得_17


④安装jupyter及findspark

spark实验心得 spark实验报告_spark实验心得_18


spark实验心得 spark实验报告_spark实验心得_19


⑤启动jupyter

spark实验心得 spark实验报告_spark实验心得_20


spark实验心得 spark实验报告_spark_21


2).使用shell命令计算

spark实验心得 spark实验报告_JSON_22


3).使用python计算
在jupyter notebook中桌面目录下新建python3程序

spark实验心得 spark实验报告_JSON_23


spark实验心得 spark实验报告_spark_24

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

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

回答:

spark实验心得 spark实验报告_JSON_25

第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

spark实验心得 spark实验报告_spark_26


2.启动jupyter notebook,在桌面新建python3程序,命名为experiment05

spark实验心得 spark实验报告_spark_27


显示姓名和课程

spark实验心得 spark实验报告_JSON_28


按姓名的groupBy操作

spark实验心得 spark实验报告_spark_29


设置临时视图

spark实验心得 spark实验报告_JSON_30

以下为scala实现

2.1 启动spark shell

spark实验心得 spark实验报告_数据_11

2.2 创建dataFrame

spark实验心得 spark实验报告_spark实验心得_32


2.3 定义一个临时表student并查询所有数据

spark实验心得 spark实验报告_数据_33


3 显示名称和科目

spark实验心得 spark实验报告_spark实验心得_34


4 根据名称排序

spark实验心得 spark实验报告_spark_35

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

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

回答:

spark实验心得 spark实验报告_spark实验心得_36


spark实验心得 spark实验报告_spark实验心得_37

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

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

回答:

1.在桌面新建txt文档

spark实验心得 spark实验报告_spark实验心得_38


2.安装numpy

spark实验心得 spark实验报告_spark实验心得_39


3.

spark实验心得 spark实验报告_JSON_40

# 训练数据
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))

spark实验心得 spark实验报告_JSON_41


spark实验心得 spark实验报告_JSON_42