基于spark集群并行化计算的交通拥堵点发现方法技术

技术编号:21089086 阅读:18 留言:0更新日期:2019-05-11 09:47
本发明专利技术公开了一种基于spark集群并行化计算的交通拥堵点发现方法,涉及轨迹大数据挖掘技术领域,解决的技术问题是如何对海量轨迹数据进行快速聚类以及发现城市热门区域的交通拥堵源,包括如下步骤:(一)对海量数据的预处理,包括补全轨迹点间的误差以及消除一定区域内一段时间的轨迹点冗余;(二)采用网格‑均值聚类算法聚类得到目标多个数据样本;(三)采用邻域最大密度网格聚类算法,聚类得到城市热门交通路网模型;(四)采用邻域密度差算法,计算出相邻网格密度差,得到交通拥堵源,并将得到的结果保存在spark内存中。本发明专利技术能够对海量数据快速聚类,得到城市交通路网模型,实现了交通拥堵源区域的快速发现。

【技术实现步骤摘要】
基于spark集群并行化计算的交通拥堵点发现方法
本专利技术涉及大数据挖掘
,尤其涉及一种基于spark集群并行化计算的交通拥堵点发现方法。
技术介绍
随着城市交通日益发展,车载定位系统的广泛应用,每天都能产生大量的轨迹数据,然而这些海量的轨迹数据却没有能得到很好的利用。同时,随着城市经济快速发展和智慧城市的需要,面对日益严峻的交通拥塞问题,如何利用当前的轨迹大数据,寻找交通拥堵的源头以及解决城市交通拥塞问题,推进智慧城市的前进步伐成为新的研究热点。目前挖掘和分析大数据平台工具有多种,其中以Hadoop和Spark为主。相对于Spark,由于Hadoop的MapReduce有着高延迟的致命弱点,导致Hadoop无力处理很多需对时间上有要求的场景,Spark不仅具备了Hadoop的所有的功能,在算法上更具优势,Spark内存迭代计算无论在占用计算机资源和计算速度上都远远超过Hadoop,因而更具有优势。现有技术的大数据聚类算法中,有均值聚类算法,层次聚类算法,网格聚类算法,密度聚类算法等。其中以网格聚类算法最为快速,但是精度不高;均值算法好坏依赖于对初始聚类中心的选择、容易陷入局部最优解;密度聚类算法优点是聚类效果好,但是时间复杂度高等。如何利用和优化这些聚类算法进行大数据挖掘和分析以解决城市交通拥塞问题成为了关键。
技术实现思路
针对现有技术的不足,本专利技术所解决的技术问题是如何对海量数据进行快速聚类,以及通过利用现有的聚类算法加以改进,同时利用现有的大数据处理平台通过处理海量轨迹数据并运用算法计算出城市交通拥堵源。为解决上述技术问题,本专利技术采用的技术方案是一种基于spark集群并行化计算的交通拥堵点发现方法,包括如下步骤:(一)对海量数据的预处理,包括补全轨迹点间的误差以及区域内一段时间内轨迹点冗余,具体过程如下:扫描所有数据源,将数据提取到Spark集群的RDD中得到数据集U;对数据进行分割,将分割后的数据分布到节点上得到数据集集合{U1,U2,U3…Un},各个节点把数据集集合分配给Map函数,Map函数中调用一个截取函数,截取每条数据的后三个数据字段得到时间戳T、经度值Long和纬度值Lat;将得到的新数据Map函数设置一个时间段值Tx、两点距离数值Dis1和Dis2(其中Dis1<Dis2);选取Map函数任意一条数据,设两条数据的时间戳分别为T1,T2,其对应经纬度值为(Long1,Lat1)、(Long2,Lat2),恒有T1-T2<Tx,且或则我们认为该两个轨迹点为相似点,删除其中任意一条数据;遍历Map,直到所有数据处理完毕,得到一个新的Map函数;在这个新的Map函数设立一个值n,任意选取Map中的一条数据,假设其经纬度值为Long、Lat,则有Long’=Long*n,Lat’=Lat*n,其中Long’,Lat’为新的轨迹点坐标值,如此循环直到所有数据遍历计算完为止,具体步骤如下:(1)将所有的原始数据存储到spark集群的RDD上,得到数据集U;(2)遍历RDD上的数据集U,进行分割,将分割后的数据集集合U{U1,U2,U3…Un}分配到集群中的每个节点上,遍历数据,截取每条数据字段,只保留经纬度坐标(Long,Lat)和时间(T);(3)对RDD数据集集合U{U1,U2,U3…Un}进行遍历,在数据集合的Map函数设置一个时间段值Tx和两点距离数值Dis1和Dis2(其中Dis1<Dis2);读取数据集合中的两条数据,设两条数据的时间戳分别为T1,T2,对应经纬度值为(Long1,Lat1)、(Long2,Lat2),恒有T1-T2<Tx,且或则我们认为这两条数据为相似数据,删除其中一条数据,直到所有数据遍历完毕,将处理完毕的数据保存到一个新的Map函数中;(4)在这个新的Map函数中设立一个值n(n∈N*),任意选取一条数据,设其经纬度值为(Long、Lat),则有Long’=Long*n,Lat’=Lat*n,其中Long’,Lat’为新的轨迹点坐标值,遍历所有数据,直到数据处理完毕。(二)采用网格-均值聚类算法聚类得到目标多个数据样本,具体过程如下:Spark集群节点读取RDD分片数据,把数据分配到Map函数中,初始化网格G,网格个数为n*n;设置轨迹网格化阈值(Lx,Ly)、网格密度阈值k,则有:U1={(Long1,Lat1),(Long2,Lat2),(Long3,Lat3)…(LongN,LatN)},其中U1为轨迹数据集、(LongN,LatN)为轨迹点经纬度值;恒有网格点坐标其中x,y即为LongN,LatN网格化后的坐标点;直到所有轨迹点网格化完毕,得到每个网格坐标点G(x,y)的网格密度d,如果有:d<k则该网格点不为密集点,删除;否则该网格点为密集点并保存到新的Map函数;将得到的网格密集点Map函数坐标进行K-means++聚类,设聚类样本值为m,m和Spark集群节点数相同,然后将聚类得到的m个样本分配到集群每个节点上,具体分步骤如下:(1)读取已经预处理好的轨迹点经纬度值到新的RDD;(2)将既定地图区域内的地图化为单位长度相同的n*n个网格,并把RDD中的轨迹点映射到相应坐标的网格中,轨迹点网格化算法如下:设(LongN,LatN)为原始轨迹经纬度,则:网格化后坐标为(x,y即为轨迹点(LongN,LatN)网格化后的坐标点);(3)遍历所有网格,过滤掉区域密度小于k(k为设定的阈值)的网格,每个网格坐标点G(x,y)的网格密度d,如果有:d<k则该网格点为密度稀疏点,删除;否则该网格点为密集点并保存到新的Map函数中;(4)使用k-means++聚类算法聚类Map函数中的网格,聚类中心选择m个,得到m个数据集样本,并分别把网格坐标和轨迹点分配到集群节点RDD中。所述网格K-means++聚类算法步骤如下:1)从数据集中随机选取一个样本点即(网格坐标点)作为初始聚类中心C1;2)计算每个网格坐标点(Xn,Yn)与当前已有聚类中心(X,Y)之间的最短距离即最近的聚类中心的距离,则:用D(x)表示;计算每个样本点被选为下一个聚类中心的概率按照轮盘法选择出下一个聚类中心;3)重复步骤2)直到选择出m个聚类中心;4)针对数据集中每个网格坐标点(Xn,Yn),计算它到m个聚类中心点的距离并将其分配到距离最小的聚类中心所对应的类中;5)重新计算每个有变化的聚类的均值即中心对象;6)重复步骤4)、步骤5),直到聚类中心不在发生变化(三)采用邻域最大密度网格聚类算法,spark集群节点并行分别计算每个数据样本,寻找出每个网格邻域最大密度网格点并聚类,得到城市交通热门路网模型,具体过程如下:spark集群每个节点单独提取不同分片轨迹数据和网格坐标,并对网格坐标再一次网格化,把一个网格重新划分成n个小网格,其中n为自定义值,设原始网格坐标为G(Xn,Yn),则划分后的网格坐标为G(Xn’,Yn’):Xn’=(Xn–Lx)/n;Yn’=(Yn–Ly)/n其中Lx,Ly为第一次网格化设定的阈值,则重新划分后的坐标为G(Xn’,Yn’);所述邻域网格最大密度聚类算法:将重新网格化后的坐标集合分配到Map函数中,选取任意一个本文档来自技高网...

【技术保护点】
1.一种基于spark集群并行化计算的交通拥堵点发现方法,其特征在于,包括如下步骤:(一)对海量数据的预处理,包括补全轨迹点间的误差以及区域内一段时间内轨迹点冗余;(二)采用网格‑均值聚类算法聚类得到目标多个数据样本;(三)采用邻域最大密度网格聚类算法,spark集群节点并行分别计算每个数据样本,寻找出每个网格邻域最大密度网格点并聚类,得到城市交通热门路网模型;(四)采用邻域密度差算法,通过spark集群并行化计算出相邻网格密度差,得到交通拥堵点,并将得到的结果保存在spark内存中。

【技术特征摘要】
1.一种基于spark集群并行化计算的交通拥堵点发现方法,其特征在于,包括如下步骤:(一)对海量数据的预处理,包括补全轨迹点间的误差以及区域内一段时间内轨迹点冗余;(二)采用网格-均值聚类算法聚类得到目标多个数据样本;(三)采用邻域最大密度网格聚类算法,spark集群节点并行分别计算每个数据样本,寻找出每个网格邻域最大密度网格点并聚类,得到城市交通热门路网模型;(四)采用邻域密度差算法,通过spark集群并行化计算出相邻网格密度差,得到交通拥堵点,并将得到的结果保存在spark内存中。2.如权利要求1所述的基于spark集群并行化计算的交通拥堵点发现方法算法,其特征在于,步骤(一)具体过程如下:扫描所有数据源,将数据提取到Spark集群的RDD中得到数据集U;对数据进行分割,将分割后的数据分布到节点上得到数据集集合{U1,U2,U3…Un},各个节点把数据集集合分配给Map函数,Map函数中调用一个截取函数,截取每条数据的后三个数据字段得到时间戳T、经度值Long和纬度值Lat;将得到的新数据Map函数设置一个时间段值Tx、两点距离数值Dis1和Dis2(其中Dis1<Dis2);选取Map函数任意一条数据,设两条数据的时间戳分别为T1,T2,其对应经纬度值为(Long1,Lat1)、(Long2,Lat2),恒有T1-T2<Tx,且或则我们认为该两个轨迹点为相似点,删除其中任意一条数据;遍历Map,直到所有数据处理完毕,得到一个新的Map函数;在这个新的Map函数设立一个值n,任意选取Map中的一条数据,假设其经纬度值为Long、Lat,则有Long’=Long*n,Lat’=Lat*n,其中Long’,Lat’为新的轨迹点坐标值,如此循环直到所有数据遍历计算完为止,具体步骤如下:(1)将所有的原始数据存储到spark集群的RDD上,得到数据集U;(2)遍历RDD上的数据集U,进行分割,将分割后的数据集集合U{U1,U2,U3…Un}分配到集群中的每个节点上,遍历数据,截取每条数据字段,只保留经纬度坐标(Long,Lat)和时间(T);(3)对RDD数据集集合U{U1,U2,U3…Un}进行遍历,在数据集合的Map函数设置一个时间段值Tx和两点距离数值Dis1和Dis2(其中Dis1<Dis2);读取数据集合中的两条数据,设两条数据的时间戳分别为T1,T2,对应经纬度值为(Long1,Lat1)、(Long2,Lat2),恒有T1-T2<Tx,且或则我们认为这两条数据为相似数据,删除其中一条数据,直到所有数据遍历完毕,将处理完毕的数据保存到一个新的Map函数中;(4)在这个新的Map函数中设立一个值n(n∈N*),任意选取一条数据,设其经纬度值为(Long、Lat),则有Long’=Long*n,Lat’=Lat*n,其中Long’,Lat’为新的轨迹点坐标值,遍历所有数据,直到数据处理完毕。3.如权利要求1所述的基于spark集群并行化计算的交通拥堵点发现方法,其特征在于,步骤(二)具体过程如下:Spark集群节点读取RDD分片数据,把数据分配到Map函数中,初始化网格G,网格个数为n*n;设置轨迹网格化阈值(Lx,Ly)、网格密度阈值k,则有:U1={(Long1,Lat1),(Long2,Lat2),(Long3,Lat3)…(LongN,LatN)},其中U1为轨迹数据集、(LongN,LatN)为轨迹点经纬度值;恒有网格点坐标其中x,y即为LongN,LatN网格化后的坐标点;直到所有轨迹点网格化完毕,得到每个网格坐标点G(x,y)的网格密度d,如果有:d<k则该网格点不为密集点,删除;否则该网格点为密集点并保存到新的Map函数;将得到的网格密集点Map函数坐标进行K-means++聚类,设聚类样本值为m,m和Spark集群节点数相同,然后将聚类得到的m个样本分配到集群每个节点上,具体分步骤如下:(1)读取已经预处理好的轨迹点经纬度值到新的RDD;(2)将既定地图区域内的地图化为单位长度相同的n*n个网格,并把RDD中的轨迹点映射到相应坐标的网格中,轨迹点网格化算法如下:设(LongN,LatN)为原始轨迹经纬度,则:网格化后坐标为(x,y即为轨迹点(LongN,LatN)网格化后的坐标点);(3)遍历所有网格,过滤掉区域密度小于k(k为设定的阈值)的网格,每个网格坐标点G(x,y)的网格密度d,如果有:d<k则该网格点为密度稀疏点,删除;否则该网格点为密集点并保存到新的Map函数中;(4)使用k-means++聚类算法聚类Map函数中的网格,聚类中心选择m个,得到m个数据集样本,并分别把网格坐标和轨迹点分配到集群节点RDD中。4.如权利要求1所述的基于spark集群并行化计算的交通拥堵点发现方法,其特征在于,步骤(二)分步骤(4)中,所述网格K-means++聚类算法步骤如下:1)从数据集中随机选取一个样本点即(网格坐标点)作为初始聚类中心C1;2)计算每个网格坐标点(Xn,Yn)与当前已有聚类中心(X,Y)之间的最短距离即最近的聚类中心的距离,则:用D(x)表示;计算每个样本点被选为下一个聚类中心的概率按照轮盘法选择出下一个聚类中心;3)重复步骤2)直到选择出m个聚类中心;4)针对数据集中每个网格坐标点(Xn,Yn),计算它到m个聚类中心点的距离并将其分配到距离最小的聚类中心所对应的类中;5)重新计算每个有变化的聚类的均值即中心对象;6)重复步骤4)、步骤5),直到聚类中心不在发生变化。5.如权利要求1所...

【专利技术属性】
技术研发人员:刘阳何倩李双富李祖文江炳城杨辉黄焕徐红
申请(专利权)人:广西交通科学研究院有限公司桂林电子科技大学
类型:发明
国别省市:广西,45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1