一种基于分布式系统的海量交通数据快速处理方法

文档序号:9766029阅读:364来源:国知局
一种基于分布式系统的海量交通数据快速处理方法
【技术领域】
[0001] 本发明设及分布式内存计算平台SparkW及分布式文件系统HDFS领域,特别设及 一种基于分布式系统的海量交通数据快速处理方法。
【背景技术】
[0002] Spark是一个内存计算框架,提供和Hadoop (分布式系统基础框架)类似的 MapReduce操作,但是中间结果不是存在文件系统上,而是在内存中,相比于化doop,在运算 速度上有很大提升。
[0003] 皿FS的全称为化doop Distributed Filesystem,是化doop的旗舰级文件系统。其 思想来源于Google文件系统(Google File System,GFS),并适合一次写入、多次读取的访 问模式,满足城市多源数据应用场景。它是一个适合存储大文件的分布式文件系统,可W作 为化doop和Spark的数据源。
[0004] 在内存中使用缓存技术,将常用数据块在内存中持久化,加快数据的处理速度。借 助于Spark中的畑D(Resilient Dis1:;r;Lbuted Datasets,弹性分布式数据集)将数据在内存 中做标记并持久化,使得数据能被快速定位及访问。在内存中的预留空间使用完时,使用一 种替换算法将不常用的数据块从内存中删除,目前比较适合的替换方法是最近最少使用 (LRU)替换算法。
[0005] 而随着目前城市交通发展迅速,交通数据量日益庞大,数据处理费时、效率低。如 何在分布式系统的基础上实现快速处理海量交通数据正成为研究的方向。

【发明内容】

[0006] 本发明针对上述交通数据量大,处理比较费时的技术问题,提出一种基于分布式 系统的海量交通数据快速处理方法,该方法查询速度快,且效率高。
[0007] -种基于分布式系统的海量交通数据快速处理方法,包括W下步骤:
[000引步骤a:在时间和空间上将海量交通数据分块,分块后的所述交通数据具有时间属 性标识和空间属性标识;
[0009] 步骤b:在内存中W细粒度存储一定数量的常用的所述交通数据,在文件系统中W 粗粒度存储除所述内存存储的交通数据之外的交通数据;
[0010] 步骤C:当处理程序请求处理数据时,判断所请求的交通数据是否在内存中;
[0011] 步骤d:如果所请求的交通数据存储在内存中,则直接处理相应数据;W及
[0012] 步骤e:如果所请求的交通数据存储在所述文件系统中,则先根据文件信息从所述 文件系统中将所述交通数据读入内存,再对所述交通数据进行处理。
[0013] 优选地,所述在时间上将交通数据分块是将每天的交通数据按顺序分为五个时间 段:凌晨、早高峰、平峰即早晚高峰之间、晚高峰W及深夜,并用数字1~5作为其时间属性标 识。
[0014] 优选地,所述在空间上将交通数据分块是根据所述交通数据产生地点的经缔度信 息找到其对应的交通小区,并将小区编号作为其空间属性标识。
[0015] 优选地,所述交通小区是根据城市居民区W及交通道路将城市划分而成的小区, 所述交通小区具有包括小区编号、交通小区质屯、、交通小区边界点集W及交通小区描述的 域。
[0016] 优选地,所述找到交通数据对应的交通小区包括如下步骤:
[0017] 步骤al:获取所述交通数据产生地点P的经度和缔度信息;
[0018] 步骤a2:计算点P和所有交通小区质屯、之间的距离,并按照距离从近到远排序;步 骤曰3:按照所述顺序根据计算获得的所述距离判断所述点P是否在对应的交通小区内; [00 19] 步骤曰4:如果在对应的交通小区内,则返回对应的小区编号;否则继续找,如果最 后也没有找到,则返回-1;
[0020] 步骤a5:找到所述交通数据对应的交通小区后,在所述交通数据上增加一个字段, 记录其对应的交通小区编号,作为空间属性标识。
[0021] 优选地,步骤b中,在内存中W细粒度存储交通数据,是同时按照时间和小区号进 行划分,将时间和小区号(<时间,小区号〉)两者结合起来作为所述交通数据的键值。
[0022] 优选地,步骤b中,在文件系统中W粗粒度存储交通数据,是在各个时间段的基础 上,将所有交通小区分为若干个集合,并在文件开始位置记录各个小区在文件中的位置信 息。
[0023] 优选地,步骤C中,对于要处理的交通数据,根据其时间和空间属性查找其是否存 在内存中。
[0024] 优选地,步骤e中根据文件信息从所述文件系统中读取所述交通数据进一步包括 W下步骤:
[0025] 步骤el:根据时间和空间属性获得所述交通数据所在的文件的文件名W定位该文 件;
[0026] 步骤e2:根据所述文件开头的数据位置索引信息,找到交通数据在文件中的具体 位置,W快速读取。
[0027] 优选地,所述内存中只保留一部分空间用于缓存所述常用交通数据,当新的交通 数据需要读入内存时,若内存中预留空间不足,则根据最近最少使用原则从内存中剔除一 部分数据,并将所需数据读入内存中。
[0028] 根据本发明的机遇分布式系统的交通数据处理方法,对于海量交通数据,可W快 速、高效地查询,大大提高了数据处理效率。
【附图说明】
[0029] 图1是根据本发明方法的数据处理流程图。
[0030] 图2是HDFS与内存映射关系图。
[0031] 图3是内存数据细粒度存储示意图。
[0032] 图4为北京市的交通小区划分示意图。
【具体实施方式】
[0033] W下结合附图对本发明进行详细说明。W下实施例并不是对本发明的限制。在不 背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明 中。
[0034] 图1是根据本发明方法的数据处理流程图,包含数据的预处理过程(步骤Sl~S2) 和数据请求处理过程(步骤S3~S6)。
[0035] 下面先对数据的预处理过程进行详细说明。预处理包括将原始数据按照时间和空 间划分,增加时间和空间标识字段,并按照规则存储在文件系统上。
[0036] 首先在时间和空间上将海量交通数据分块,分块后的所述交通数据具有时间属性 标识和空间属性标识(步骤Sl)。
[0037] 城市交通系统每天都会产生大量的数据,对数据进行的大部分操作并不需要每次 都对所有文件进行,而是根据某种属性选择一部分数据进行操作。即使要处理大量的数据, 由于内存的限制,也需要对数据进行分块处理,所W需要提高的就是获取相应数据块的速 度。由于交通数据在时间和空间的分布上有明显的规律(客流聚集、早晚高峰等),所W选择 时间和空间运两个属性来作为海量交通数据分块的指标。
[0038] 1)关于在时间上分块
[0039] 交通数据中时间字段是W字符串格式存储的,格式为yyyy-MM-dd HH:mm:ss(如 2015-08-3014:42: 32)。根据客流规律,将每天按时间分为五个时间段:凌晨、早高峰、平峰 (早晚高峰之间)、晚高峰W及深夜,分别用数字1至化作为时间属性标识。分时段方法如下: 对于时段kta;rtTime, endTime),只需要将每条数据的时间字段time和StartTime、endTime 进行比较即可。
[0040] 2)关于在空间上分块
[0041] 在空间上分块指根据交通数据产生地点的经缔度信息,找到其对应的交通小区。 如图4所示为北京市的交通小区划分示意图。交通小区是一种对城市的划分方法,根据城市 居民区W及交通道路将城市划分为一个个小区。它具有包括小区编号、交通小区质屯、、交通 小区边界点集W及交通小区描述的多个域(如下表所示),另外还包括周长、面积等信息。
[0043] 划分交通数据块时W交通小区作为最小的划分单元。根据该交通数据产生地点的 经缔度信息找到其所属交通小区的方法如下:
[0044] 步骤al:获取该交通数据产生地点P的经度和缔度信息,如Qng, Iat);
[0045] 步骤a2:计算点P和所有交通小区质屯、之间的距离,并按照距离从近到远排序;
[0046] 步骤a3:按照该顺序根据计算获得的距离判断该地点P是否在对应的交通小区内;
[0047] 步骤a4:如果在对应的交通小区内,则返回对应的小区编号;否则继续找,如果最 后也没有找到,则返回-1; W及
[0048] 步骤a5:找到该交通数据对应的交通小区后,在交通数据上增加一个字段,记录其 对应的交通小区编号,作为空间属性标识。
[0049] 如上所述,交通数据分块后,使得处理程序能够快速获取所需部分的数据。
[0050] 接下来,在内存中W细粒度存储一定数量的常用的交通数据,在文件系统中W粗 粒度存储除其它交通数据(步骤S2)。
[0051] 若把交通数据只按照时间或者仅仅按照空间属性来划分数据块,那么从内存中提 取另一种属性就需要读取多个运样的数据块后读取其中的部分数据,运会使得数据的访问 效率变低。运就需要将数据的粒度变得更小,使用时间和空间两种属性同时划分数据。对于 M个时间段W及N个小区,就会产生MXN个数据块。运种情况下数据的组合会更加灵活和快 速。
[0052] 另一方面,皿FS是面向大文件设计的,当
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1