SpatialHadoop中空间索引系列之(七)RTree/R+Tree的实现

来源:互联网 发布:云计算名词解释 编辑:程序博客网 时间:2024/05/07 19:17

R-Tree

       本节主要描述下在章节V-B中是如何通过基于集群节点的R-Tree索引对空间数据进行分割的。如图4(b)所示,是每个分区中R-Tree局部索引。

       在数据分割阶段,为了计算分块的边界,我们通过批量加载一个输入文件的随机样本到内存中,R-Tree采用文献30中的Sort-Tile-Recursive(STR)算法实现。随机样本的大小为输入文件大小的1%的默认比率,最大限制为100MB,这样可以确保适合内存计算。比率和最大限制都可以通过配置文件设置。如果文件是不点图层,在批量导入阶段使用图形的中心点来代替。当输入文件特别大时,为了保证文件读取的速率,我们采用MapReduce来扫描所有记录和输出结果,每一条记录都有1%的可能性。这部分工作也可以追踪采样点的总体大小(以字节的方式)。如果大小小于100MB,样本将用于构建R-Tree。否则,将执行第二次样本操作,这次将以100/S比率的可能性输出结果,最终生成一个期望100MB大小的子样本。

       一旦样本载入,主节点将通过STR算法和参数d(R-Tree度)来设置⌈√n⌉,来确保树的第二级至少包含n个节点。一旦树被构建,将计算二级节点的边界,通过边界来执行物理切分。我们之所以选择STR算法,是因为他生成的是一个平衡的树,在每一个叶子节点上都拥有大致相同数量的点。上图是采用R-Tree树进行索引的,拥有36个块的例子,其中d=6.类似于R-Tree,物理切分不复制几率,但是他会分配每一条记录到一个数据块,这个数据块最少需要覆盖该记录,通过选择最小面积的分区来分解节点。

       在局部索引阶段,每一个分区的记录是被通过采用SRT算法批量载入到一个R-Tree中的,然后被写入一个文件。在局部索引文件中,这个块中标示了他所包含的所有记录的最小外包矩形。由于记录是重叠的,类似于传统的R-Tree索引,分区也可能是重叠的。全局索引阶段链接所有的局部索引,将通过批量载入所有块到R-Tree中采用他们的外包矩形作为索引键来生成全局索引。

============================================================================

R+-Tree

与R-Tree不同,1)在物理分区阶段,每一条记录被复制到他所覆盖的所有分区;2)在局部索引阶段,每一个分区的所有记录被插入到一个R-Tree中,这个R-Tree被写入到一个局部索引文件中;3)全局索引是基于在分区阶段生成的区块边界构建的,而不是基于他所包含记录的最小外包矩形,因为边界可以保持不相交。


0 0