首页 理论教育 实战漫谈:用SparkSQL处理交通数据

实战漫谈:用SparkSQL处理交通数据

时间:2023-06-20 理论教育 版权反馈
【摘要】:通过分析GPS定位信息、3G通信信息、GIS地理信息等数据,我们可以准确预测群体出行行为,合理规划交通路线,为改善城市交通提供有利的保证。记录车辆GPS的时间跟用户交易数据的时间是不一样的,如何用SparkSQL计算出用户下车时间最近的GPS时间是本案例的重点。

实战漫谈:用SparkSQL处理交通数据

随着信息技术的快速发展,特别是信息获取技术、互联网、物联网、社交网络等技术的突飞猛进,引发了数据规模的爆炸式增长,智慧城市和智慧交通的概念也越来越受到人们的重视。通过分析GPS定位信息、3G通信信息、GIS地理信息等数据,我们可以准确预测群体出行行为,合理规划交通路线,为改善城市交通提供有利的保证。同时,我们也可以利用交通数据进行商业性的分析,比如商圈分析、轨迹分析等。

下面的这个实例,是基于用户乘坐出租车交易信息和出租车的GPS轨迹信息来分析乘客的下车地点。出租车的GPS信息包括以下内容:出租车车牌号(carId),经度(longi-tude),纬度(latitude),时间(time),时间戳(timestamp)。用户交易信息的内容是出租车车牌号(carId),下车时间(downtime),下车时间戳(downtimestamp),交易里程(mile-age),交易金额(money)。记录车辆GPS的时间跟用户交易数据的时间是不一样的,如何用SparkSQL计算出用户下车时间最近的GPS时间是本案例的重点。

以下为本例的源代码及分析。

(1)首先获取用户下车时间的后150s内上传的GPS轨迹信息,找出与下车时间间隔最小的时间和正确的GPS轨迹信息。核心代码如下所示。

其中,“join_sql1”用于找出具有相同carId的、距下车时间150s后的所有记录,并且把处理结果保存到表"join_1min_hou"中;"sql_mintime"是从这些记录里面找出距离下车时间最小间隔的时间,并且把结果保存在"mintime_T"中,根据最近时间和车牌号找出最接近下车时间的GPS信息。(www.xing528.com)

(2)然后用同样的方法获取用户下车前150s内上传的GPS轨迹信息中最靠近下车时间的GPS表中的对应时间和信息。核心代码如下所示。

(3)接下来我们将距离下车时间前最近的时间表(qian_max)和距离下车时间后最近时间表(hou_min)进行union操作,并把结果保存在表"qianhou"中,然后通过求最小时间差(timediff)找出真正最近的时间以及对应的GPS信息,这就是我们要找的最接近的下车时间的GPS。代码如下所示。

(4)最后我们把结果保存在文件中。

下面是该案例的完整代码。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈