1

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

是否可以在键上索引此表?例如,如果表名是table1并且我想在列键上执行table1table2table3table 4 的多个连接,那么最有效的方法是什么?

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

4

1 回答 1

1

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

于 2012-07-23T12:19:06.240 回答