基于Hadoop的多层次轨迹数据存储装置的制作方法

文档序号:18755322发布日期:2019-09-24 22:11阅读:159来源:国知局
基于Hadoop的多层次轨迹数据存储装置的制作方法

本发明属于数据处理技术领域,特别是涉及一种基于hadoop的多层次轨迹数据存储装置。



背景技术:

随着定位技术的进步发展,例如支持gps定位的手机的普及,大量的轨迹数据由人类、车辆产生。管理和处理这些大量的轨迹数据是许多城市计算、智能交通应用程序的基础,包括交通建模,用户行为分析,资源分配和调度等等。用于管理和分析轨迹数据的系统不仅在科学研究中很重要,在实际应用中也很重要。以中国最大的拼车公司滴滴为例,利用轨迹数据提供出行时间预测、需求预测、拼车调度等服务。因此,针对轨迹数据管理和分析提出了多种方法。

在实际应用中,大量的移动电话和配有位置定位设备的车辆每天产生海量的有一定特征的轨迹数据。针对轨迹数据的管理系统《pist:anefficientandpracticalindexingtechniqueforhistoricalspatio-temporalpointdata》在geoln-formatica期刊中被提出,该系统将轨迹数据以点为基本单位构建空间索引,它首先统计轨迹数据在空间维度的分布,然后构建空间索引划分数据点。最后对每个划分内部的数据根据时间维度构建索引。chakka在cidr会议中提出了以子轨迹为基本单元的管理系统《indexinglargetrajectorydatasetswithseti》,该系统同样首先根据统计数据构建空间索引,然后根据空间索引划分轨迹数据,并将每个划分内同一移动对象的子轨迹作为基本处理单元构建时空索引。类似的传统集中式系统在管理和处理真实轨迹数据方面由于索引和存储结构是基于单节点处理的,效率低下,对实时的基于位置服务显得无能为力,不适合分布式的应用场景,面对海量的轨迹数据无法做到高效率的存储和查询。

近年来,基于mapreduce的各种系统也被提出用于空间数据分析,这些系统在云环境中具有可扩展性,并且比集中式的系统更加高效,《amapreduceframeworkforspatialdata》在icde会议中提出的系统基于云计算技术,把一个任务分配到不同的计算节点上,并行地处理请求。

但是,现有的轨迹数据的存储方法,存在着查询效率低下的问题。



技术实现要素:

本发明解决的技术问题是如何提高所存储的轨迹数据的查询效率。

为了达到上述目的,本发明提供了一种基于hadoop的多层次轨迹数据存储装置,所述装置包括:

读取单元,适于读取具有预设时空属性的初始轨迹数据;

分区单元,适于对所读取的初始轨迹数据按照时空属性进行多层级划分,得到对应的块数据;

索引构建单元,适于为所得到的块数据构建对应的块内数据索引;

存储单元,适于将所述块数据和对应的块内数据索引进行存储。

可选地,所述具有预设时空属性的初始轨迹数据具有(oid,loc,time,a1,…,an)结构;其中,oid表示对象标识属性,loc表示所述初始轨迹数据的空间属性,time表示所述初始轨迹数据的时间戳属性,a1至an表示所述初始轨迹数据的公共属性。

可选地,所述分区单元,适于按照对象标识属性将所述初始轨迹数据进行划分得到对应的一级分区数据;将所得到的一级分区数据按照空间属性进行划分得到对应的二级分区数据;将所得到的二级分区数据按照时间戳属性进行进一步细分得到所述块数据。

可选地,所述分区单元,适于计算所述初始轨迹数据的对象标识属性的哈希值;按照计算得到的哈希值和预设的第一时间粒度对所述初始轨迹数据进行划分得到对应的多个一级分区数据。

可选地,所述分区单元,适于通过在所述空间属性空间上构建四叉树空间索引,将所得到的一级分区数据划分得到对应的多个二级分区数据。

可选地,所述装置还包括:

扩展单元,适于当需要存储所述块数据的增量数据时,对所述增量数据按照时空属性进行多层级划分,得到对应的增量块数据;将所述增量块数据与对应的所述块数据进行合并。

可选地,所述存储单元,适于将块内数据索引存放在块文件的开头,并按照时间顺序将所述块内数据连续储于所述块内数据索引之后。

与现有技术相比,本发明的有益效果为:

上述的方案,通过读取具有预设时空属性的初始轨迹数据,对所读取的初始轨迹数据按照时空属性进行多层级划分,得到对应的块数据,为所得到的块数据构建对应的块内数据索引,并将所述块数据和对应的块内数据索引进行存储,可以在对轨迹数据进行检索时,采用时空数据对查询的数据进行定位,而无需对所有的轨迹数据均进行遍历,故可以提高轨迹数据的查询效率,提升用户的使用体验。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的一种基于hadoop的多层次轨迹数据存储方法的流程示意图;

图2是本发明实施例的一种对轨迹数据进行多层级划分的示意图;

图3是本发明实施例中的轨迹数据存储结构示意图;

图4是本发明实施例的一种基于hadoop的多层次轨迹数据存储装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本发明实施例中有关方向性指示(诸如上、下、左、右、前、后等)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。

如背景技术所述,现有技术中的轨迹数据存储方法在查询时存在着效率低下的问题。

为解决上述问题,本发明的技术方案通过读取具有预设时空属性的初始轨迹数据,对所读取的初始轨迹数据按照时空属性进行多层级划分,得到对应的块数据,为所得到的块数据构建对应的块内数据索引,并将所述块数据和对应的块内数据索引进行存储,可以在对轨迹数据进行检索时,采用时空数据对查询的数据进行定位,而无需对所有的轨迹数据均进行遍历,故可以提高轨迹数据的查询效率,提升用户的使用体验。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

图1是本发明实施例的一种基于hadoop的多层次轨迹数据存储方法的流程示意图。参见图1,一种基于hadoop的多层次轨迹数据存储方法,具体可以包括:

步骤s101:读取具有预设时空属性的初始轨迹数据。

在本发明一实施例中,所述具有预设时空属性的初始轨迹数据具有(oid,loc,time,a1,…,an)结构;其中,oid表示对象标识属性,loc表示所述初始轨迹数据的空间属性,time表示所述初始轨迹数据的时间戳属性,a1至an表示所述初始轨迹数据的公共属性,如加速度等。

步骤s102:对所读取的初始轨迹数据按照时空属性进行多层级划分,得到对应的块数据。

在具体实施中,在对所读取的初始轨迹数据按照时空属性进行多层级划分时,可以首先按照对象标识属性将所述初始轨迹数据进行划分得到对应的一级分区数据,再将所得到的一级分区数据按照空间属性进行划分得到对应的二级分区数据,最后将所得到的二级分区数据按照时间戳属性进行进一步细分得到所述块数据。在本发明一实施例中,在按照对象标识属性将所述初始轨迹数据进行划分得到对应的一级分区数据时,可以首先计算所述初始轨迹数据的对象标识属性的哈希值,并按照计算得到的哈希值和预设的第一时间粒度对所述初始轨迹数据进行划分得到对应的多个一级分区数据。在本发明另一实施例中,在将所得到的一级分区数据按照空间属性进行划分得到对应的多个二级分区数据时,可通过在所述空间属性空间上构建四叉树空间索引的方式进行。

参见图2,在本发明一实施例中,采用mapreduce作业执行对对所读取的初始轨迹数据按照时空属性进行多层级划分。具体而言:

mapreduce作业首先对初始轨迹数据按照对象标识属性oid进行一级分区,得到对应的n个一级分区bucket,即bucket-000、bucket-001……bucket-00n,并且对每个一级分区bucket-00i(1≤i≤n)生成对应的索引。具体地,map函数读取原始数据,输出<bucket_id,record>,其中,bucket_id,即bucket-000、bucket-001……bucket-00n,为根据表模式中指定的一级分区策略计算得到的一级分区标识,record为对应的轨迹数据内容。在reduce阶段,按一级分区bucket的一级分区标识bucket_id进行分组,reduce函数将组的所有记录写入单独的输出文件。同时,它在内存中维护一个组的样本,创建一级分区bucket的索引。

接着,按照空间属性loc将一级分区bucket文件进一步划分得到对应的多个二级分区region。在本发明一实施例中,通过map函数在空间属性上构建四叉树空间索引的划分方法,对每个bucket进行划分,得到对应的多个二级分区region,如图2所示的r0~r9。

当划分得到二级分区时,再按照比一级分区更加精细的时间粒度对二级分区region进行划分,得到多个三级分区block,并且输出<block_id,record>。其中,block_id为三级分区block的标识,record为对应的轨迹数据内容。

按键进行分组后,reduce函数接收属于同一个三级分区block的所有记录。

步骤s103:为所得到的块数据构建对应的块内数据索引。

在具体实施中,当将初始轨迹数据按照时空属性进行多层级划分完毕时,接下来可以为划分得到的块内数据block生成块内数据索引,即元数据。其中,所述元数据的数据内容包括轨迹数据中的常见属性的定义、从一级分区bucket到二级分区region及从二级分区region到三级分区block的映射关系等。

步骤s104:将所述块数据和对应的块内数据索引进行存储。

在具体实施中,将所述块数据和对应的块内数据索引进行存储,即将把划分后的块数据(blockfile)以特定的格式写入分布式文件系统(hdfs)中。具体而言,参见图3,可以首先块内索引存放在文件的开头,p为实际数据的存储位置的偏移地址;对于实际的轨迹数据部分,按照时间顺序排序,然后按照列的顺序存储,同一个属性连续存储,再将一级分区到二级分区及二级分区到三级分区的映射关系写入元数据文件存储在表同一目录下即可。

在具体实施中,所述基于hadoop的多层次轨迹数据存储方法,还可以包括:

步骤s105:当需要存储所述块数据的增量数据时,对所述增量数据按照时空属性进行多层级划分,得到对应的增量块数据。

其中,所述块数据的增量数据即与已经存储的块数据具有相同的时空范围属性的新的待存储的轨迹数据。当存在所述块数据的增量数据时,可以按照步骤s102得到该待存储的增量数据对应的块数据,即得到增量数据对应的增量块数据,在此不再赘述。

步骤s106:将所述增量块数据与对应的所述块数据进行合并。

在具体实施中,当得到对应的增量数据对应的增量块数据时,则通过块内索引定位到增量数据的实际位置,依次把定义的属性数据写入定位到的位置,更新块内索引完成合并,再由元数据管理器用合并的块数据文件替换当前块数据文件,并直接添加那些未与现有块数据文件合并的增量块数据文件即可。

当采用上述的步骤将轨迹数据进行存储之后,对存储的轨迹数据进行查询时,可以首先输入查询范围,如是对象标识属性oid、空间属性loc、时间属性time的组合,本发明通过元数据和块数据blockfile的块内索引来定位数据。

例如,对于查询q(i,s,t),其中,i是对象标识的oid,s是空间范围,t是时间范围。首先,根据一级分区找到关于i和t的一级分区,然后根据二级分区上的四叉树空间索引定位上述一级分区中与s相交的二级分区。在这些区域中,根据三级分区进一步找出时间范围与t相交的块数据。

对于涉及的每个块数据,通过读取块内索引,获取对应于象标识i的实际数据位置,读入内存,然后使用空间范围s和时间范围t对这些记录进行最终过滤,然后返回符合条件的数据。

本发明是一个基于hadoop的多层次轨迹数据存储方法,采用了一种特定的数据格式,能够优化时空属性的系统实现,足以应用于非常大的数据集,以实现具有任何可能范围的所有对象查询的高效并行处理,为hdfs上的实际存储数据定义了节省空间的文件格式。同时,使用mapreduce描述并行算法,以执行所有对象查询、初始数据加载和增量式数据加载。这些算法在处理非常大的数据集时具有可扩展性和高效性。

上述对本发明实施例中的方法进行了详细的描述,下面将对上述的方法对应的装置进行介绍。

图4示出了本发明实施例中的一种基于hadoop的多层次轨迹数据存储装置的结构示意图。参见图4,所述一种基于hadoop的多层次轨迹数据存储装置40,可以包括读取单元401、分区单元402、索引构建单元403和存储单元404,其中:

读取单元401,适于读取具有预设时空属性的初始轨迹数据。在本发明一实施例中,所述具有预设时空属性的初始轨迹数据具有(oid,loc,time,a1,…,an)结构;其中,oid表示对象标识属性,loc表示所述初始轨迹数据的空间属性,time表示所述初始轨迹数据的时间戳属性,a1至an表示所述初始轨迹数据的公共属性。

分区单元402,适于对所读取的初始轨迹数据按照时空属性进行多层级划分,得到对应的块数据。在本发明一实施例中,所述分区单元402,适于按照对象标识属性将所述初始轨迹数据进行划分得到对应的一级分区数据;将所得到的一级分区数据按照空间属性进行划分得到对应的二级分区数据;将所得到的二级分区数据按照时间戳属性进行进一步细分得到所述块数据;在本发明另一实施例中,所述分区单元402,适于计算所述初始轨迹数据的对象标识属性的哈希值;按照计算得到的哈希值和预设的第一时间粒度对所述初始轨迹数据进行划分得到对应的多个一级分区数据;在本发明又一实施例中,所述分区单元,适于通过在所述空间属性空间上构建四叉树空间索引,将所得到的一级分区数据划分得到对应的多个二级分区数据。

索引构建单元403,适于为所得到的块数据构建对应的块内数据索引。

存储单元404,适于将所述块数据和对应的块内数据索引进行存储。在本发明一实施例中,所述存储单元404,适于将块内数据索引存放在块文件的开头,并按照时间顺序将所述块内数据连续储于所述块内数据索引之后。

在具体实施中,所述装基于hadoop的多层次轨迹数据存储装置40,还可以包括扩展单元405,其中:

扩展单元405,适于当需要存储所述块数据的增量数据时,对所述增量数据按照时空属性进行多层级划分,得到对应的增量块数据;将所述增量块数据与对应的所述块数据进行合并。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述的基于hadoop的多层次轨迹数据存储方法的步骤。其中,所述基于hadoop的多层次轨迹数据存储方法请参见前述部分的介绍,不再赘述。

本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上储存有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述的基于hadoop的多层次轨迹数据存储方法的步骤。其中,所述基于hadoop的多层次轨迹数据存储方法请参见前述部分的介绍,不再赘述。

采用本发明实施例中的上述方案,通过读取具有预设时空属性的初始轨迹数据,对所读取的初始轨迹数据按照时空属性进行多层级划分,得到对应的块数据,为所得到的块数据构建对应的块内数据索引,并将所述块数据和对应的块内数据索引进行存储,可以在对轨迹数据进行检索时,采用时空数据对查询的数据进行定位,而无需对所有的轨迹数据均进行遍历,故可以提高轨迹数据的查询效率,提升用户的使用体验。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,本发明要求保护范围由所附的权利要求书、说明书及其等效物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1