一、 实验目的
掌握分布式数据库接口Spark SQL基本操作,以及训练综合能力,包括:数据预处理、向量处理、大数据算法、预测和可视化等综合工程能力
二、 实验环境
Linux的虚拟机环境和实验指导手册
三、 实验任务
完成Spark SQL编程实验、交通数据综合分析平台环境部署和综合实验。
四、 实验步骤
请按照实验指导手册,完成以下实验内容:
实验4-1 Spark SQL:Spark SQL 编程
(1) DataFrame数据集操作
(2) Spark SQL编程操作
实验4-2交通轨迹:安装部署
(1) 安装Spark单节点版
实验4-3交通数据综合分析实验
(1) 数据预处理 (2) 特征向量
(3) Spark SQL (4) 聚类算法
(5) 结果预测 (6) 数据可视化
五、 实验作业
1、提交实验报告电子稿和纸质稿,内容包括安装步骤及主要配置方法说明,关键步骤截图,并对截图内容进行解释说明;
2、个人对实验的总结和心得,本实验具有一定难度和繁琐程度,请总结与撰写自身遇到的问题,以及解决问题的过程。
3、搜索互联网并回答问题:
相关资料:《11天里13个Apache开源项目宣布退休,Hadoop的时代结束了》链接:https://cloud.tencent.com/developer/news/827409
该新闻中报道,约有10个左右的Hadoop开源项目宣布退休,大数据技时代的已经准备落幕了吗?请结合Hadoop技术的优缺点,评价Hadoop项目退休的原因以及未来大数据的发展趋势。
六、 实验结果与分析
1、安装步骤及主要配置方法说明
A. 实验4-1 Spark SQL:Spark SQL 编程
(1) DataFrame数据集操作
(2) Spark SQL编程操作
1、启动spark-shell,启动时指定启动模式
2、创建spark 的SQLContext
3、创建DataFrames对象
读取json格式的数据文件,查看数据的schema信息
4、select 操作
查询所有的课程名
查询所有的课程名及课程包大小
5、filter,groupyBy 和 count() 操作
打印出所有的非实验课程名称,类似于使用where条件过滤
查询课程长度在5-10之间的课程,将返回一个新的RDD
B. 实验4-2交通轨迹:安装部署
(1) 安装Spark单节点版
针对安装spark已经做了很多次了,这边还是使用脚本一键安装
脚本源码如下:
运行脚本,查看结果
C. 实验4-3交通数据综合分析实验
(1) 数据预处理 (2) 特征向量
(3) Spark SQL (4) 聚类算法
(5) 结果预测 (6) 数据可视化
1、数据准备
2、解析csv数据
导包和定义字段格式等此处不展示
直接看最后的结果:利用taxidf对象的show方法打印输出前20条数据
3、构建特征向量
3.1转换数据字段中的经纬度,定义特征数组
3.2创建向量装配器VetorAssembler,并设置相关属性
3.3利用向量装配器的transform方法对导入的数据taxidf进行转化,并赋值给taxidf2
3.4利用taxidf2对象的show方法打印前20条数据查看
4、聚类模型训练
将数据集划分比例分别作为训练集和测试集,然后对对数据集进行随机划分,randomSplit 的第二个参数为随机数的种子
setPredictionCol:设置生成预测值时使用的字段名称
获取Kmeans模型的聚类中心,可以看到之前设定数量为 10 的聚类结果
将结果转换为RDD类型,进行经纬度互换,调用RDD对象的saveAsTextFile方法保存结果到本地
5、聚类模型测试
调用Kmeans模型的transform方法对测试数据进行聚类,调用predictions对象的show方法,输出预测结果
6、分析预测结果
预测结果为DataFrame,我们先将其注册为临时表perdictions,然后使用SQL查询功能
基于小时数进行不同预测类型的数量进行统计
利用聚焦函数agg的count实现,并以desc降序输出结果
在对表predictions进行where查询,找出4号区域的经纬度记录下来
在对表predictions进行查询,找出9号区域的经纬度记录下来
得到每个区域的出租车载客次数总计
7、数据可视化
配置API及各项参数
在浏览器打开输入URL回车,即可得到聚类结果的10个簇中心在地图上的位置
创建一个新的文件夹Visualization,并在此文件夹下创建名为data和js的两个文件夹
解压并拷贝所有的js文件到此js目录中
将数据聚类分析的结果busyZones合并成单个文件
在Visualization目录下创建编辑index.html文件,完成代码编写后,在浏览器中打开文件URL,查看可视化结果
2、实验的总结和心得
本次实验主要了解了Spark SQL的基本概念、DataFrame、Spark SQL开发,利用Spark进行大数据分析实现交通数据分析系统,结合使用百度地图提供的API实现可视化的图表。其中实验4-1,4-2提供理论基础和实验环境,实验4-3最终实现交通数据的综合分析。在交通数据的综合分析实验中首先进行数据集的分割,其次利用K-means聚类算法进行聚类分析,K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进行K-means聚类分析,最后将结果转换为RDD类型,进行经纬度互换,调用RDD对象的saveAsTextFile方法保存结果到本地。利用百度地图提供的API实现数据可视化。我们可以发现实验是多学科交融的,利用获得的大数据进行合理的配置之后,喂给深度学习模型,模型经过大量数据训练后在使用时效果会更好。利用大数据,可以做好给用户精准推荐,方便分析潜在规律,具有很大的应用价值。
3、请结合Hadoop技术的优缺点,评价Hadoop项目退休的原因以及未来大数据的发展趋势。
这次合并的背景是大数据市场的整合趋势。而且可以说,这场大数据整合潮流也是上面这些项目“退役”的根本原因。很明显,在大数据世界中,大量投资于 Apache Sentry 的供应商和客户现在需要整理他们的损失并继续前进。残酷的现实带来的教训几乎适用于所有技术炒作周期:社区开始兴奋起来,开源技术激增,生态系统逐渐完善。但这些生态系统并不会永存,几乎任何新平台(无论是商业平台还是开源平台)都存在固有的风险。
用 ASF 的 Khudairi 的话来说:“每个项目背后的社区才是代码生命力的源泉(‘代码不会自动编写出来’),因此社区改变项目步伐的情况并不少见。”换句话说,尖端技术令人兴奋,但早期采用者要小心:它也是很脆弱的。请多加注意,并妥善管理风险。
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:
·高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
·高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
·高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此其处理速度非常快。
·高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
由于Hadoop优势突出,基于Hadoop的应用已经遍地开花,尤其是在互联网领域。Yahoo! 通过集群运行Hadoop,以支持广告系统和Web搜索的研究;Facebook借助集群运行Hadoop,以支持其数据分析和机器学习;百度则使用Hadoop进行搜索日志的分析和网页数据的挖掘工作;淘宝的Hadoop系统用于存储并处理电子商务交易的相关数据;中国移动研究院基于Hadoop的“大云”(BigCloud)系统用于对数据进行分析和并对外提供服务。虽然有很多项目退出,并且Hadoop存在在当前Hadoop的设计中,所有的metadata操作都要通过集中式的NameNode来进行,NameNode有可能是性能的瓶颈,但是就目前Hadoop技术的优势而言,他仍然是未来的主流。