SpatialHadoop 中的 Operations 层 之 Range Query

来源:互联网 发布:淘宝第三方鉴定机构 编辑:程序博客网 时间:2024/06/10 09:04

       本来不想翻译了,可是又看到了后面的内容。有些外文文献只看个标题,有些呢只看个摘要,有些自己喜欢的真的想好好理解一下,那就翻译吧!!!!!想看更多系列文章,请点击这里哦!!!大笑大笑大笑

       基于存储层的空间索引和MapReduce层新的空间函数,构成了SpatialHadoop框架的核心内容,也使得基于SpatialHadoop的各种高效的空间操作成为了可能。本节我们主要集中讨论下三个基本的空间操作:范围查询,kNN和空间连接。通过这三个案例来介绍如何使用SpatialHadoop。SpatialHadoop也包含了计算集合操作以及其他像kNN连接,RNN等,也通过以下类似的方法进行了实现。

       A、空间查询

       空间查询包含两个输入参数,一个是空间查询对象R,另一个是空间查询区域A,返回在空间查询对象R中,查询区域A覆盖的区域。在Hadoop中,输入参数是一个堆文件,因此,所有的记录必须被全部扫描才能输出匹配的结果记录。在SpatialHadoop中,利用了空间索引可以快速获得大量的数据。在SpatialHadoop中,空间索引分为两类:没有重复记录和含有重复记录,因此针对不同的索引,查询方法也分为两类来实现。想看更多系列文章,请点击这里哦!!!大笑大笑大笑

      不含重复记录:在Rtree索引过程中,每一条记录只完全存储在一个块中,空间查询算法通过两步来实现。(1)全局过滤阶段,通过过滤出需要被处理的数据块。这个步骤主要采用全局索引,通过空间文件分割器,筛选出覆盖查询区域A的所有数据块,这里执行了范围过滤函数。筛选出的这些块将会被输出,该步骤并不对每一块中的记录进行匹配。(2)局部过滤阶段,操作粒度是一个文件块,采用局部索引然后与查询区域A重叠的所有记录。空间记录读取器读取一个块,提取它的局部索引,然后传递给map函数,执行传统的空间查询算法来判断和返回匹配的结果记录。

      含有重复记录:在Grid索引和R+tree索引中,一些记录会重复存储在多个分区中,相应的空间查询算法也跟上面描述的不同,主要有两点:(1)在全局过滤阶段,所有包含查询区域A的块必须进行进一步的处理,重复的记录需要被移除。(2)局部过滤的输出结果需要经过额外的避免重复操作来确保最终的结果不含重复的记录。针对每一条通过局部过滤产生的记录,计算它与查询区域A的交集。只有交集的左上角在分区的边界内,这条记录才会被添加到最终的结果当中。因此,所有的分区是不相交的,需要保证只有一个分区包含那个点。避免重复步骤的输出结果会给出查询的最终答案,因此,这里不需要执行reduce函数。想看更多系列文章,请点击这里哦!!!大笑大笑大笑


GeoHadoop

0 0
原创粉丝点击