基于时空分区和交叉编码的快速时空关系连接查询方法与流程

文档序号:36383581发布日期:2023-12-14 19:13阅读:26来源:国知局
基于时空分区和交叉编码的快速时空关系连接查询方法与流程

本发明涉及数据挖掘,具体为基于时空分区和交叉编码的快速时空关系连接查询方法。


背景技术:

1、随着时空轨迹类数据的累积和应用的深入,目前对时空轨迹类数据的挖掘应用,尤其不同对象间同时空出现,轨迹伴随等方面的应用需求强烈。hive自2.2.0版本起增加了对复杂表达式连接查询的支持,对大量的时空类数据的挖掘分析提供了又一选项。hive是一款基于hadoop生态,依赖hdfs、yarn、mapreduce、tez、spark等框架引擎的分布式数据仓库。其通过类sql语言对数据仓库数据进行查询访问,查询过程被划分为map、reduce等子过程。

2、在hive下进行两表和多表的连接查询过程中通常需要耗费大量的存储和计算资源,尤其在进行复杂表达式连接查询时,由于连接条件需要实时计算,导致连接查询过程中集群资源得不到有效利用,使得连接查询需要耗费大量的时间。

3、现有技术中,时空类数据与大数据融合仍在不断深入和加速,各类优化算法层出不穷,时空轨迹的匹配、快速查找等方面有着广阔的应用场景。因此,研究时空轨迹类数据的快速查询非常重要,值得深究。目前,针对存在复杂表达式hive连接查询的研究,尤其是针对时空相类数据的连接查询优化研究相对较少,且深度不够。

4、视频结构化、移动互联、物联网等技术的发展,产生了大量的时空轨迹类数据。对时空轨迹类数据的挖掘应用,尤其不同对象间同时空关系、轨迹伴随等方面的计算需求旺盛。然而,目前同时空关系、轨迹伴随关系计算方法,普遍存在查询耗时过多,效率不高等问题。因此,提高时空轨迹数据类关系的计算效率,是当前的一个研究热点。


技术实现思路

1、针对现有技术的不足,本发明提供了基于时空分区和交叉编码的快速时空关系连接查询方法,解决了查询耗时过长,效率不高的问题。

2、为实现以上目的,本发明通过以下技术方案予以实现:基于时空分区和交叉编码的快速时空关系连接查询方法,包括以下步骤:

3、s1、数据及环境准备:选取时空轨迹类数据样本,之后按照采集时间对应的日期进行分区存储,一共包括对象编号、经度、纬度和采集时间等字段,之后将采集到的数据样本进行治理存储,得到标记数据样本;

4、s2、数据预处理:将s1步骤中的标记数据样本按如下步骤进行处理:

5、a.填充日期分区间隙,将当前日期分区前一天最后一个δt以及后一天的第一个δt插入当前日期分区,填补每个日期分区连接计算存在的缝隙问题;

6、b.位置网格化及分区,通过geohash编码生成位置网格编码c,并根据网格编码c计算网格区域编码cp,作为二级分区字段;

7、c.对每条记录的采集时间进行编码,生成3个时间编码字段和3个扩展时间编码字段;

8、d.处理好之后按照时空两级分区进行储存,得到预处理数据样本,表名:t_ost_cc;

9、s3、两表连接查询策略:设定两表连接查询步骤,根据s2步骤中的预处理数据样本进行两表连接查询,两表连接查询步骤其具体步骤为:

10、a.通过java等编程语言开发工具,生成sql,循环提交每个日期分区对应的数据进行连接查询;

11、b.每次只进行一个日期分区数据的连接查询,每次连接查询首先判断空间网格区域分区是否相同,再比较空间网格是否相等,然后比较时间段编码以及扩展是否符合条件;

12、s4、结束:通过s3步骤操作完成数据连接查询。

13、优选的,所述s1步骤中采用geohash对所有位置经度和纬度进行空间位置编码。

14、优选的,s1步骤中治理存储的方式为:

15、i、仅以日期为分区存储,未进行其它优化,类似建立一级索引的连接查询;

16、ii、以日期为分区和空间网格区域分区存储数据,类似建立二级索引的连接查询;

17、iii、增加时间交叉编码相关字段,再以天和空间网格区域码二重分区存储数据,通过时间交叉编码字段,避免了连接查询条件实时计算,避免mapreduce、tez等引擎优化功能失效,可建立类似三级索引的连接查询。

18、优选的,所述s2步骤日期分区间隙填充方式为:每次只取一个日期分区的数据进行连接查询,将前一日期分区最后一个δt以及后一日期分区的第一个δt对应的数据插入当前日期分区,填补每个日期分区连接计算存在的缝隙。

19、优选的,所述s2步骤位置信息网格化及分区具体为:利用空间网格区域码:把网格编号c转换为十进制,再进行mod 32运算,结果表述为空间网格区域码,记cp,公式3,即把同一个时间分区(一天)数据再约等分为32个空间网格区域,区域码主要作为分区字段存储,公式为:

20、

21、其中l表示使用的geohash编码的长度,d(ci)表示把geohash编码从右至左第i个字符转换为对应的十进制数。

22、优选的,所述s2步骤中时间段编码具体步骤为:

23、将采集时间t,转换为对应的unix时间戳(从1970年1月1日0时0分0秒所经过的秒数,每过1秒数值加1),记为:u=ut(t);

24、为能通过等值连接解决复杂表达式连接,需要对时间进行滑动划分并按时间段编码;

25、

26、使用公式4,p值取0,计算出时间戳u对应的时间段编码s,其中表示对该符号内数值进行向上取整,其目的是使用2δt为长度的滑块顺序号对时间段进行编码;

27、

28、再按照公式5,p值取0,计算出s的扩展码se,其目的是把同一个时间段编码对应的采集时间落在第一个δt范围的对应记录的se赋值“1”,落在第二个δt范围对应记录的se赋值“0”,即把每个编码对应的时间又划分为前一个δt和后一个δt两段。

29、类似地,依据公式4、公式5,p值分别取δt、-δt,分别计算出sa、sae、sb和sbe。

30、优选的,s3步骤中:两表连接查询步骤其具体步骤还可以是以下两种方式:

31、第一种:按“日期+网格区域”两重分区存储数据,表名:t_ost_dpcp;循环对每个时间分区数据进行连接查询,每次连接查询首先根据空间网格区域分区是否相等进行判断,再比较空间网格是否相等,最后比较计算后的两个对象采集时间差绝对值是否符合条件;

32、第二种:仅按“日期”分区存储数据,表名:t_ost_dp。循环对每个时间分区数据进行连接查询。

33、本发明提供了一种基于时空分区和交叉编码的快速时空关系连接查询方法。具备以下有益效果:

34、本发明通过“时空二级分区融合时间段交叉编码”方法对时空类关系数据连接查询进行优化,提出一种dpcp_seg_cross_join算法,实现连接查询的3级索引,将n·n对象间的同时空关系连接查询时间复杂度从o(n2)降为o(nlogn)。在hadoop集群上使用yarn、hdfs、mapreduce、hive、tez等组件进行大规模数据的连接查询时,性能稳定,并能将连接查询效率提升至普通分区表的30.66倍,总体性能提升至21.38倍;同一集群,当数据达到220.2gb、59.6亿条时,存在复杂表达式的连接查询,在仅通过时空分区等优化已无法在规定时间内完成连接查询,而该算法仍能仅增加32.45%的时间消耗就完成连接查询任务,说明了在集群资源允许的前提下,1倍规模与10倍规模数据相比连接查询时间消耗无明显增加。因此,dpcp_seg_cross_join算法较为稳定,连接查询高效。这种方法可作为时空轨迹伴随查找,不同对象间关系亲密度判定算法的原子算法,可广泛应用于维护国家安全、维护社会治安秩序,预防和打击犯罪,辅助城乡规划统筹等领域。

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