蜂巢的空间索引

时间:2013-06-17 20:40:18

标签: hadoop gis hive spatial spatial-index

我在hive中为空间数据库创建表,我知道有空间数据的特殊索引,它们是R-tree。在蜂巢中创建空间索引是不可能的(我认为)。我正在考虑尝试使用小数来制作x,y(long,lat),连续变量的索引。我认为这不是最有效的。

我们使用esri库进行空间代数,但在某些情况下查询性能非常差。

Esri gis tools for hadoop

我在想......

为这两个变量创建索引,或者用xi = int(x / 0.2)* 0.2,yi = int(y / 0.2)* 0.2?

类型的变量对表进行分区是否更好?

我认为表分区效率更高,但设计查询更复杂,我认为分区不支持带小数的数字变量

带边界框的最典型查询将是一系列空间数据。任何人都知道使用配置单元为这种查询构建数据的有效方法吗?

是否有一种在hive中创建和实现R-tree的方法?你能用带小数的连续值对表进行分区(我看过很多例子,似乎没有)?

2 个答案:

答案 0 :(得分:0)

空间数据也有k维树,操作起来应该更加简单。

答案 1 :(得分:0)

我只看过带日期的分区示例。 Tyle 2012,2013 ......等等这些都是离散的价值观。我不知道你是否可以定义一个带有范围的分区,例如:[40.1,42.4]中的y和[-4,0)中的x,[42.4,43]中的另一个补码y和[-4中的x] 0)..分区没有静态范围,因为会有空间区域没有太多信息。这是一种制作四叉树http://en.wikipedia.org/wiki/Quadtree的方法,但与分区相关联,没有索引。我认为它可以作为一个空间索引,可以在蜂巢中工作,也许是一种优雅的方式。

这是我的想法。我希望有人找到一种方法来制作分区,最重要的是x和y是决定要检查的分区的变量,或者是一个优雅的替代方案

这是制作分区的示例

CREATE TABLE销售(     sales_order_id BIGINT,     order_amount FLOAT,     order_date STRING,     due_date STRING,     customer_id BIGINT ) PARTITIONED BY(国家STRING,年份INT,月份INT,日期INT);