当前位置: 首页 > 专利查询>大连大学专利>正文

大规模空间数据环境下基于二级索引的通用查询算法制造技术

技术编号:21913929 阅读:19 留言:0更新日期:2019-08-21 12:25
大规模空间数据环境下基于二级索引的通用查询算法,属于数据查询领域,为了解决非行键属性实时范围查询的问题,框架由以下几部分组成:客户端、Spark计算模块、HBase数据处理模块;算法执行如下:在HBase数据处理模块和Spark计算模块的Schema基础上调用SparkContext提供的API建立HBase的原始数据的RDD,RDD经过不断转化形成二级索引存放在Spark Memory中,效果是提高了大规模空间数据范围查询的效率。

General query algorithm based on secondary index in large-scale spatial data environment

【技术实现步骤摘要】
大规模空间数据环境下基于二级索引的通用查询算法
本专利技术属于数据查询领域,涉及一种大规模空间数据环境下基于二级索引的通用查询算法。
技术介绍
空间索引可以解决空间数据近邻查询问题,但是不能解决非行键属性实时范围查询的问题。而现有的二级索引的设计灵感来源于倒排的思想,将主数据表的键值对倒置。Solr是一个高性能的基于Lucene的企业级全文搜索服务器,Solr+HBase的二级索引方案是基于Solr集群搭建的搜索引擎来查找结构化数据,基于HBase搭建的数据存储云来存储海量数据。
技术实现思路
为了解决非行键属性实时范围查询的问题,本专利技术提出如下技术方案:一种大规模空间数据环境下基于二级索引的通用查询算法,框架由以下几部分组成:客户端、Spark计算模块、HBase数据处理模块;算法执行如下:在HBase数据处理模块和Spark计算模块的Schema基础上调用SparkContext提供的API建立HBase的原始数据的RDD,RDD经过不断转化形成二级索引存放在SparkMemory中;根据客户端的查询请求并行筛选二级索引模块,筛选出满足查询条件的Rowkey后从HBase中查询数据并返回结果给客户端。进一步的,将倒排索引和GeoHash算法结合形成InvertedGeoHash索引,其模型为IG索引的模型,该模型的倒排GeoHash索引包含两部分:第一部分,是空间数据对象与其所在的GeoHash网格的映射;第二部分,是网格编码与存储在其中的所有数据对象的映射;利用GeoHash算法将地球划分成多个网格,对每个网格中的空间数据对象构建空间二级索引,通过每个网格的GeoHash编码反向索引其包含的空间对象的Rowkey,使用GeoHash算法和Base32编码对空间数据地理信息降维得到的一维字符串作为二级索引的key,每个空间数据在HBase表中的行键信息作为二级索引的value,GeoHash划分的矩形区域中,每一个区域都有固定的编码,同一个区域内的点编码都相同,通过改变GeoHash编码的长度改变矩形区域的覆盖范围。进一步的,由Spark编程模型构建二级索引:(1)使用read.parquet加载数据信息并创建parquetRDD;(2)使用该算子并行在每个分区调用geoHash算法的API,将parquetRdd转换成mapPartitionRDD(Rowkey,GeoHashCode),数据类型是key-value对形式的(String,String);(3)partitionBy算子。给partitionBy算子传入RangePartitioner,来给RDD重新分区,该过程数据类型不变;(4)通过该算子访问各自分区的所有空间对象,然后并行创建索引。进一步的,在Spark框架下,利用二级索引对HBase非行键空间数据的范围查询算法:给定一个空间对象集合S,再给定一查询点P=(Lng,Lat)和查询半径d,在集合S中存在集合R={R1,R2...Ri}与查询点P距离小于d,记为RQ(P,S):范围查询算法使用两阶段处理策略,第一阶段是索引的筛选,首先需要计算出查询目标大致所在的GeoHash单元网格,称作MBR,通过查找RDD中的索引表单元筛选出所有MBR作为候选集,第二阶段是遍历求精,通过二次计算与查询点的距离从候选集中求得满足查询要求的最终结果;将构建的索引转为RDD的形式被存储到内存中,在进行范围查询的时候,利用Spark的转化操作算子mapPartitions并行执行查询任务。进一步的,在空间二级索引的支持下,基于Spark的范围查询的详细过程如算法如下:已知查询点p的空间位置信息和查询范围d;首先,调用geo对象的getGeoCode方法,此方法封装了以给p为圆心,d为半径画圆,返回落在圆内和与圆相交的编码区域,得到结果集所在的GeoHash编码区域集合Kn;然后,子节点收到task任务后对空间索引RDD的分片进行检索,将检索结果并入结果集;最后,通过再次扫描筛掉结果集中实际距离大于查询范围d的数据,并返回最终结果。有益效果:本专利技术提出了融合Spark查询框架和空间索引技术的实时查询方案,来提高大规模空间数据范围查询的效率。在该查询框架内的Spark担任实时计算的角色,二级索引以RDD的形式供查询实时调用。Spark强大的分布式内存计算优势能极大地提高大规模数据处理的速度。HBase通过行键比不通过行键的全表扫描方式查找数据所需的时间差很多,前者在毫秒级可实现,后者则需要几秒甚至更多。因此,对于非行键的查询,还是要先通过计算得到行键,再去查询,更方便和省时。本专利技术把为非行键的值和行键建立映射作为突破口,也就是建立二级索引。在大规模空间数据的查询中,索引结构的选择对查询性能举重若轻。常见的索引结构有B树、Hash、倒排索引等结构。B树这一类的树结构不适合并行化,并且拆子树的过程比较复杂。Hash结构在数据量多的情况下,为了解冲突需要花费比较多的代价。因此,为了提高查询效率,我们选用在分布式环境下全文搜索最受欢迎的索引结构:倒排索引。除此之外,为了进一步简化查询过程,本专利技术尽可能地利用空间对象的形状与位置或是各空间要素间的拓扑关系过滤掉大量和查询区域不相关的数据。基于分形理论且具有一维特性的空间编码技术可以达到这一目。GeoHash是空间范围查询中常用的空间编码技术,它是将地球划分为多个大小相同的网格,每个网格可以包含多个数据对象,并且这些对象拥有相同的GeoHash编码。如此一来,地理位置上相邻近的空间对象的GeoHash编码也大都相似或相同,锁定一个编码就等同于锁定多个空间对象。针对资源浪费的问题,GeoHash技术可以在保持空间对象地理信息的拓扑关系的基础之上,将针对二维空间数据的范围查询问题转换为针对一维数据的查询。这样在查询多维信息时,省去了Solr方案中对各个维度进行布尔运算所耗费的时间。本专利技术的二级索引选用分布式倒排索引结构结合GeoHash技术,使用GeoHash编码作为key,每个空间数据在HBase表中的行键信息作为二级索引的value。查询二级索引的key,即可快速得到该区域内所有数据对象在HBase中存储的行键。在技术实现上面,本专利技术采用Spark分布式处理技术来实现二级索引的构建以及范围查询算法的优化。Spark的核心数据架构是RDD(弹性分布式数据集),整个Spark程序是通过对RDD的操作来完成的。利用Spark一反面可以将索引文件以及Job作业的中间结果以RDD的形式放在内存中,避免了大量磁盘I/O,可以节省大量时间。另一方面,Spark是基于MapReduce算法模型实现的分布式并行计算框架,使用Spark编程模型并行化处理范围查询算法,可以将一个作业方便地被拆分成多个子任务同时进行处理。利用内存计算结合分布式处理的方案可以提升整体的查询性能。基于上述技术方案,本专利技术总体上解决了在对大规模空间数据执行查询操作时,由于HBase非行键查询效率较低而导致整体性能受到影响的问题。HBase通过行键比不通过行键的全表扫描方式查找数据所需的时间差很多,前者在毫秒级可实现,后者则需要几秒甚至更多。因此,对于非行键的查询,还是要先通过计算得到行键,再去查询,更方本文档来自技高网...

【技术保护点】
1.一种大规模空间数据环境下基于二级索引的通用查询算法,其特征在于,框架由以下几部分组成:客户端、Spark计算模块、HBase数据处理模块;算法执行如下:在HBase数据处理模块和Spark计算模块的Schema基础上调用SparkContext提供的API建立HBase的原始数据的RDD,RDD经过不断转化形成分布式二级索引存放在SparkMemory中;根据客户端的查询请求并行筛选二级索引模块,筛选出满足查询条件的Rowkey后从HBase中查询数据并返回结果给客户端。

【技术特征摘要】
1.一种大规模空间数据环境下基于二级索引的通用查询算法,其特征在于,框架由以下几部分组成:客户端、Spark计算模块、HBase数据处理模块;算法执行如下:在HBase数据处理模块和Spark计算模块的Schema基础上调用SparkContext提供的API建立HBase的原始数据的RDD,RDD经过不断转化形成分布式二级索引存放在SparkMemory中;根据客户端的查询请求并行筛选二级索引模块,筛选出满足查询条件的Rowkey后从HBase中查询数据并返回结果给客户端。2.如权利要求1所述的大规模空间数据环境下基于二级索引的通用查询算法,其特征在于,将倒排索引和GeoHash算法结合形成InvertedGeoHash索引,其模型为IG索引的模型,该模型的倒排GeoHash索引包含两部分:第一部分,是空间数据对象与其所在的GeoHash网格的映射;第二部分,是网格编码与存储在其中的所有数据对象的映射;利用GeoHash算法将地球划分成多个网格,对每个网格中的空间数据对象构建空间二级索引,通过每个网格的GeoHash编码反向索引其包含的空间对象的Rowkey,使用GeoHash算法和Base32编码对空间数据地理信息降维得到的一维字符串作为二级索引的key,每个空间数据在HBase表中的行键信息作为二级索引的value,GeoHash划分的矩形区域中,每一个区域都有固定的编码,同一个区域内的点编码都相同,通过改变GeoHash编码的长度改变矩形区域的覆盖范围。3.如权利要求2所述的大规模空间数据环境下基于二级索引的通用查询算法,其特征在于,由Spark编程模型构建二级索引:(1)使用read.parquet加载数据信息并创建parquetRDD;(2)使用该算子并行在每个分区调用geoHash算法的API,将parquetRdd转换成mapPa...

【专利技术属性】
技术研发人员:季长清汪祖民高杨
申请(专利权)人:大连大学
类型:发明
国别省市:辽宁,21

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

1