4

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

我们将 esri 库用于空间代数,但在某些情况下查询性能很差。

用于 hadoop 的 Esri gis 工具

我刚在想 ....

是为这两个变量创建索引,还是通过 xi = int(x/0.2) * 0.2, yi = int(y/0.2) * 0.2 类型的变量对表进行分区更好?

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

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

有没有一种方法可以在 hive 中创建和实现 R-tree?可以用小数对连续值的表进行分区吗(我看过很多例子,好像没有)?

4

2 回答 2

0

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

于 2013-06-18T10:49:43.337 回答
0

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

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

这是制作分区的示例

CREATE TABLE sales (sales_order_id BIGINT, order_amount FLOAT, order_date STRING, due_date STRING, customer_id BIGINT) PARTITIONED BY (country STRING, year INT, month INT, day INT);

于 2013-06-19T22:00:09.423 回答