gpt4 book ai didi

join - Apache Hive 使用的默认 MapReduce 连接是什么?

转载 作者:可可西里 更新时间:2023-11-01 14:24:38 26 4
gpt4 key购买 nike

Hive 实现的默认 MapReduce 连接算法是什么?是 Map-Side Join、Reduce-Side、Broadcast-Join 等吗?

原始论文和 Hive wiki 中均未指定连接:

http://cs.brown.edu/courses/cs227/papers/hive.pdf
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins

最佳答案

“默认”连接将是随机连接,又名。作为共同加入。参见 JoinOperator.java .它依赖于 M/R shuffle 对数据进行分区,并且连接在 Reduce 端完成。由于是随机播放期间的数据大小副本,因此速度很慢。

更好的选择是 MapJoin,参见 MapJoinOpertator.java .如果您只有一个大表和一个或多个小表要加入(例如,典型的星型模式),则此方法有效。先扫描小表,构建哈希表上传到HDFS缓存,然后启动M/R作业,只需要拆分一张表(大表)。比 shuffle join 更有效,但需要小表来适应 M/R 映射任务的内存。通常 Hive(至少从 0.11 开始)会尝试使用 MapJoin,但这取决于您的配置。

一个专门的连接是 bucket-sort-merge 连接,又名。 SMBJoin,见SMBJoinOperator.java .如果您有 2 个大表与连接键上的分桶相匹配,则此方法有效。然后可以安排 M/R 作业拆分,以便 map 任务 gest 仅拆分保证在连接键上过度重叠的两个大表,以便 map 任务可以使用哈希表进行连接。

还有更多详细信息,例如倾斜连接支持和内存不足情况下的回退,但这可能会让您开始调查您的需求。

关于连接主题的一个非常好的演示是 Join Strategies in Hive .请记住,事情发展很快,2011 年的介绍有点过时了。

关于join - Apache Hive 使用的默认 MapReduce 连接是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com