2012-07-23 65 views
1

我在hadoop集群上有一个相当大的Hive表(约200亿条记录),我需要对它进行多次连接。Hive中的索引

是否有可能在一个键索引此表?例如,如果表名是表1,我想要做的表1多加入与表2表3 4列关键什么是做到这一点的最有效方法?

如果相关的表2-4是相对非常小(〜亿个)

回答

1

恕我直言,指数将在这种情况下帮助,只有当它有table1的非常高的选择性。如果table1的严重部分(我会推测多于1%到5%)将会是连接的结果,那么索引不会有效。原因是你会在任何情况下阅读所有页面/块。
Hive可以决定一个表很小,并将其用作每个映射器上的内存散列表,而不用混洗。 https://issues.apache.org/jira/browse/HIVE-195
您也可以从事实,你的表是在mapjoin的情况下划分的改进: https://issues.apache.org/jira/browse/HIVE-917
我不知道,如果蜂巢能够做常见的连接使用分区信息。