在Hive中编制索引

时间:2012-07-23 06:36:08

标签: hadoop indexing hive

我在hadoop集群上有一个相当大的Hive表(大约200亿条记录),我需要在它上面做几个连接。

是否可以在密钥上索引此表?例如,如果表名是 table1 ,并且我想与 table2 进行 table1 的多个连接, table3 上的 4,最有效的方法是什么?

如果相关表2-4相对非常小(每个约1亿)

1 个答案:

答案 0 :(得分:1)

只有当它对table1具有非常高的选择性时,IMHO Index才会有所帮助。如果table1的严重部分(我会推测超过1-5%)将成为连接的结果,索引将不会有效。原因是您将在任何情况下读取所有页面/块。
Hive可以决定一个表是小的,并且在每个映射器的内存哈希表中使用它来执行连接而不进行混洗。 https://issues.apache.org/jira/browse/HIVE-195
在mapjoin的情况下,您可以从表中分区的事实中获得改进: https://issues.apache.org/jira/browse/HIVE-917
我不确定Hive是否能够使用分区信息进行公共连接。