基于Spark的出租车信息查询系统

当代的社会正逐步走向一个数据驱动的智能社会,更加完善的数据获取方式,更加系统的数据整合和储存手段,让我们息息相关的生活中能取得的数据逐渐成为了真正的大数据。指数级增长的数据量给数据的处理和分析带来了更多的困难,但是也带来了更多的可能性,从数据挖掘的角度,更多的样本量意味着更不容易过拟合,更小的方差和置信度更高的结论。所以利用合适的大规模处理框架去处理与生活息息相关的大数据将为我们带来更多启发,对社会现象更准确的分析结果和更深入的理解。其中,基数巨大且频率较高的交通数据作为一个最典型的大数据来源之一,其背后巨大的大数据价值正等待我们去发掘。

进入21世纪以来,应我国交通系统发展的需求,智慧交通的建设进入了高速发展期。基于移动计算技术和全球定位系统(GPS)以及其他形式的位置获取技术,可收集到大量移动交通对象的轨迹数据。通过对这些轨迹数据的分析挖掘,可以提取大量有效信息,服务于智慧交通建设,服务于人们日常生活。

在多种多样的交通方式中出租车在人们的日常出行中扮演了重要角色,是交通数据分析中不可缺少的组成部分。出租车有别于公交车、地铁等公共交通,具有没有固定线路和站点的特点,为个人出行提供定制化服务。因此出租车轨迹信息数据能够较为清晰反映出城市交通的状况,可挖掘分析人们的出行特点等信息。

1.2 项目意义

出租车作为一种普遍而广泛的出行方式深受人们的青睐,作为一种交通形式而言,研究出租车数据能方便我们深入了解其在城市里的具体特征和出租车行业在该地区的发展状态。同样的,出租车的数据在一定程度上反映了该地区人口的流动性情况,出租车的行车轨迹与方式在一定程度上也能反映全市的整体的情况。而城市的道路和交通情况被称为一座城市的心跳与脉搏,深入理解出租车数据也有助于我们去分析城市内部与出租交通息息相关的特征与因素,从而在某些层面上为未来的城市改进提供了方向。

对于出租车数据的分析结果可用于城市规划,交通建设等多个方面,具有较强的应用意义。例如,提取热点轨迹,反映车辆行驶运动规律,可帮助政府了解城市道路情况,对于道路与交通路线规划和交通治理有重要价值,对个人了解出行的合适时间与费用以及交通服务质量也有积极作用;

提取出租车轨迹数据中的载客点和卸客点,可反映人们的出行习惯,乘车需求分布等信息,对车辆调度分配、运营策略调整等方面有较为有效的帮助;

对于车速和占用率的分析结果可以反映出租车行业在各个时间段和不同地区的分区差异,帮助改进部分道路设计和帮助出租车公司和司机寻找更好的工作方式。

对于个人而言,通过训练出的模型估计到达目的地所需的时间,帮助顾客(地图使用者)更好地评估所需时间和计算出发的时间以避免迟到等等。

1.3 报告组成

本篇报告的剩余部分将分为五个部分,报告的第二、三部分对我们使用的数据集,我们项目的代码框架以及在代码框架里主要使用的工具和技术做了简单地介绍,给读者一个关于数据集所包含信息的大致映像,同时方便读者更好地理解本项目的工作流程和方式;

报告的第四部分将细致地根据不同的分类介绍我们的信息检索系统提供的功能和交互结果的展示,并且在每一个功能展示后,我们将会对功能展示出的结果做出自己的分析,也有助于读者理解每一个模块具体想要提供什么样的信息和背后设计的思想;

在第五部分中我们将总结整篇报告中的分析和结果,对上海市的出租车交通情况做一个大致的总结。并根据我们的数据和已有的成果从城市规划、道路设计和行人出行等方面提出了一些合理的建议。

报告的最后部分将是我们小组的分工介绍。

2 数据集介绍

2.1 数据来源

启发自纽约出租车数据集的分析,我们尝试对我们生活的上海的出租车数据进行分析和挖掘,最终我们通过SODA(上海开放数据创新应用大赛)平台得到了上海强生出租车公司提供的出租车数据。上海强生出租车公司作为上海主要的出租车运营和管理公司之一,其提供的出租车数据基数大,发送频率高,能在一定程度上反映上海市的出租车交通的生态情况。

强生出租车公司的出租车每过10s会向公司数据总部发送一个信号,信号主要包括当前汽车所处的经纬度坐标、行车方向、速度、是否被占用(载客)、是否踩了刹车等等有关汽车或者GPS微型当前状况的属性。经过大致的统计,强生出租车公司在一天内收到的数据大约体量在1亿条以上。

 项目框架与使用技术介绍

因为当前并不存在一个用于完成类似于我们的出租车信息的查询与可视化框架去学习,所以我们基于 Spark 的大规模数据处理框架,自主设计了我们的项目的代码框架,在本部分里,将详细介绍我们使用的技术和数据存放格式,代码框架的设计:

3.1 使用技术

  • 基本框架是 Spark,Spark 提供了对数据的读入,序列化以及一系列操作;
  • 同时使用了两种各有优劣的 RDD 和 DataFrame 存储不同的数据表,基于两种变量类型完成查询,排序,展示等结果;
  • 主要的处理方式是基于 Spark 提供的对序列化数据集的操作接口(如 map, filer 等),主要的处理方式是 MapReduce;
  • 基于 matplotlib 的统计图表可视化(折现趋势图和柱状分布图),还包括了使用 FuncAnimation 进行的动画(gif)制作;
  • 基于 Basemap 和 folium 的地理信息可视化;
  • 基于 Django 的网页前端实现;
  • 基于 Python3 脚本的类的封装。

3.2 数据表存放格式

对于一个数据表,会同时维护一个 RDD 和一个 DataFrame ,因为相对而言 DataFrame 的运行速度稍微快一些,而RDD支持的基本操作类型更多,为了方便后续操作,在初始化过程中对原始数据集所在的RDD按照时间进行排序;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源码论文专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值