一种基于MapReduce的最邻近空间集合关键字查询方法技术

技术编号:37966341 阅读:7 留言:0更新日期:2023-06-30 09:41
本发明专利技术公开了一种基于MapReduce的最邻近空间集合关键字查询方法,基于Hadoop框架,使用实时建立的分布式Hilbert R

【技术实现步骤摘要】
一种基于MapReduce的最邻近空间集合关键字查询方法


[0001]本专利技术属于数据查询
,具体涉及一种最邻近空间集合关键字查询方法。

技术介绍

[0002]随着定位技术的出现和移动设备的普及,许多网页,社交网络和其他数据都添加了“位置”标签,基于关键字和位置匹配的空间关键词查询在网络上迅速增长,极大的丰富了基于地图的位置服务的资源,改变了人们在日常生活中位置查询的方式,更好的服务了人们的生活。在各种基于关键字的位置信息查询中,单一关键字查询较为常见,比如在百度地图中搜索“加油站”或“便利店”等。随着请求的日益复杂,多个关键字被一个空间对象所包含变得越来越难,查询目标逐渐从一个空间对象变成多个空间对象的集合,比如查询{“加油站”,“餐馆”}可以找到相距较近的位置区域。
[0003]这种从单一对象到对象所在区域的查找方法也被称为空间集合查询,近年来引起了研究人员的关注。由于传统区域数据库的存储和计算能力有限,因此在大型数据的环境下的空间集合查询仍处于理论研究中,未存在成熟的基于地图的空间集合查询应用。
[0004]面向大数据的空间对象查询的方法主要包括以下两种:1)直接应用现有环境进行大数据的并行计算以解决空间查询问题,例如MapReduce解决K

NN查询;2)扩展现有大数据系统以解决空间范围查询问题,例如基于Hadoop的TAREEG解决空间查询问题以及MoDisSENSE解决时间和空间等级查询问题。当前面向大数据的集合空间关键字查询主要在研究阶段,并未有相关实际的应用,原因在于查询算法多采用直接组合的方式进行大数据环境下的算法实现;并且现有算法均假设空间索引与倒排索引已经完成,在数据更新快,数据量大,实时性上仍有较大的缺陷。
[0005]Hilbert R

树是建立在R

树基本结构上的一种有效的索引结构,使用希尔伯特曲线的优秀聚集性质,将高维数据映射到一维上,保存大部分空间信息,实现R

树数据的有效编制。该方法具有快速树结构、外部存储器存取少,易于并行处理的特征。Hilbert R

树适用于处理不均匀分散的点数据集的情况。对于实际的点数据来说,Hilbert R

树的构建分为静态的和动态的。

技术实现思路

[0006]为了克服现有技术的不足,本专利技术提供了一种基于MapReduce的最邻近空间集合关键字查询方法,基于Hadoop框架,使用实时建立的分布式Hilbert R

树索引的方式,采用了两点配对算法结合叶子节点对角线剪枝方法与圆扫描剪枝方法完成了快速的空间集合关键字的查询,并在地图应用中进行了实验。实验结果表明分布式Hilbert R

树索引的设计,可以有效减小索引体量,应对异构数据源与数据快速更新的情况;两点配对算法可以极大削减检索空间,加快系统的响应速度,促进了集合空间关键词查询的实用化。
[0007]本专利技术解决其技术问题所采用的技术方案包括如下步骤:
[0008]步骤1:地图位置对象数据的格式包含:1)数据所包含的关键字;2)数据的经纬度
坐标;所有数据存放在HDFS中;
[0009]步骤2:设置查询关键字,从HDFS的block读取对象数据,对象数据读取过程中,根据对象数据包含的关键字,将符合查询条件的对象数据放在内存中,并根据查询关键字生成该对象数据的keyBit,keyBit是表示对象数据包含关键字的二进制代码;然后序列化HilbertCurve对象,根据HilbertCurve对象的经纬度坐标求出其Hilbert value,建立Hilbert R

树,并将Hilbert R

树传给所有的计算节点;
[0010]步骤3:叶子节点对角线剪枝方法;
[0011]步骤3

1:生成一个叶子节点,判断该叶子节点所包含的查询关键字,如果该叶子节点包含所有查询关键字,那么将该叶子节点的对角线距离设置为阈值;
[0012]步骤3

2:重复步骤3

1,如果新生成的叶子节点包含所有的查询关键字,且对角线距离小于阈值,则用新生成的叶子节点的对角线距离更新阈值,直到所有的叶子节点全部生成完;最终得到的阈值记为S;
[0013]步骤4:圆扫描剪枝方法;
[0014]遍历所有对象数据,以数据对象为圆心,为直径构建一个圆,判断该圆区域内是否包含所有的查询关键字,如果不包含所有查询关键字,则将该对象数据从对象集合中删除;
[0015]步骤5:遍历剩余对象数据,采用两点配对法进行对象数据的两两配对,形成对象对;
[0016]步骤6:对象配对方法;
[0017]步骤6

1:用Hilbert R

树的根节点与自身配对;
[0018]步骤6

2:对于非叶子节点对,列举所有的子节点对,如果两个节点所对应的矩形的最小距离大于S,则忽略该节点对,否则继续进行子节点进行配对;对于叶子节点对,列举所有的对象对;
[0019]步骤6

3:重复6

2,直到所有的对象对都配对完成;
[0020]步骤7:如果对象对的距离小于阈值S,则将对象对的距离设为key,两个对象数据作为value输出给reduce;
[0021]步骤8:reduce阶段,对每一个对象对所在的区域内进行扫描,如果能够找到以key为直径的对象集合,则作为候选的输出结果;取距离最小的前十个候选对象进行序列化,输出到对应的文件中。
[0022]进一步地,所述两点配对法具体如下:
[0023]集合空间关键字查询的目标是查找位置最接近的若干个对象的集合,其中接近的度量方式采用对象集合的“直径”描述,即使用对象集合中两两距离的最大值作为直径;集合关键字查询就是去查找能够包含所有关键字,并且直径最小的对象集合;
[0024]首先将对象进行两两组合形成对象对,然后将对象对按距离大小进行升序排列,最后逐一将对象对扩展为对象集合,如果某一个对象对可以被扩展为对象集合,那么该对象集合即为所求结果。
[0025]进一步地,所述叶子节点对角线剪枝方法具体如下:
[0026]Hilbert R

树的构建采用的是自底向上的方式,首先是生成叶子节点,叶子节点是使用最小外包矩形作为它的空间属性;如果一个叶子节点中包含了所有查询关键字,那
么能够在这个叶子节点中找到一个满足所有查询关键字的对象集合,且它的直径小于这个叶子节点的对角线距离,所以该叶子节点的对角线距离即是集合空间关键字查询的结果的上限;
[0027]在Hilbert R

树生成的时候,对生成的叶子节点进行判定,如果包含所有查询关键字,那么该叶子节点的对角线距离即为结果本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于MapReduce的最邻近空间集合关键字查询方法,其特征在于,包括如下步骤:步骤1:地图位置对象数据的格式包含:1)数据所包含的关键字;2)数据的经纬度坐标;所有数据存放在HDFS中;步骤2:设置查询关键字,从HDFS的block读取对象数据,对象数据读取过程中,根据对象数据包含的关键字,将符合查询条件的对象数据放在内存中,并根据查询关键字生成该对象数据的keyBit,keyBit是表示对象数据包含关键字的二进制代码;然后序列化HilbertCurve对象,根据HilbertCurve对象的经纬度坐标求出其Hilbert value,建立Hilbert R

树,并将Hilbert R

树传给所有的计算节点;步骤3:叶子节点对角线剪枝方法;步骤3

1:生成一个叶子节点,判断该叶子节点所包含的查询关键字,如果该叶子节点包含所有查询关键字,那么将该叶子节点的对角线距离设置为阈值;步骤3

2:重复步骤3

1,如果新生成的叶子节点包含所有的查询关键字,且对角线距离小于阈值,则用新生成的叶子节点的对角线距离更新阈值,直到所有的叶子节点全部生成完;最终得到的阈值记为S;步骤4:圆扫描剪枝方法;遍历所有对象数据,以数据对象为圆心,为直径构建一个圆,判断该圆区域内是否包含所有的查询关键字,如果不包含所有查询关键字,则将该对象数据从对象集合中删除;步骤5:遍历剩余对象数据,采用两点配对法进行对象数据的两两配对,形成对象对;步骤6:对象配对方法;步骤6

1:用Hilbert R

树的根节点与自身配对;步骤6

2:对于非叶子节点对,列举所有的子节点对,如果两个节点所对应的矩形的最小距离大于S,则忽略该节点对,否则继续进行子节点进行配对;对于叶子节点对,列举所有的对象...

【专利技术属性】
技术研发人员:邱原刘作陈雄博肖浩白雪茹魏锦波
申请(专利权)人:广西东信易通科技有限公司
类型:发明
国别省市:

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

1