gpt4 book ai didi

join - 运行 HIVE Join 查询时,Reducers 在 66.68% 时停止工作

转载 作者:可可西里 更新时间:2023-11-01 14:18:08 25 4
gpt4 key购买 nike

尝试连接 6 个表,每个表中大约有 500 万行。尝试加入在所有表上按升序排序的帐号。 Map 任务成功完成,reducer 在 66.68% 时停止工作。尝试了增加 reducer 数量等选项,还尝试了其他选项 set hive.auto.convert.join = true;并设置 hive.hashtable.max.memory.usage = 0.9;并设置 hive.smalltable.filesize = 25000000L;但结果是一样的。尝试使用少量记录(如 5000 行),查询效果非常好。

请建议可以在这里做什么以使其发挥作用。

最佳答案

66% 的 Reducers 开始执行实际的 reduce(0-33% 是洗牌,33-66% 是排序)。在与 hive 的连接中,reducer 在两个数据集之间执行笛卡尔积。

我猜测至少有一个外键在所有数据集中频繁出现。注意 NULL 和默认值。

例如,在一个连接中,假设键“abc”在六个表中的每一个中出现十次 (10^6)。那是那个键的一百万条输出记录。如果“abc”在一个表中出现 1000 次,在另一个表中出现 1000 次,在另一个表中出现 1000 次,然后在其他三个表中出现两次,您将获得 80 亿条记录 (1000^3 * 2^3)。你可以看到这是如何失控的。我猜至少有一个键导致了大量的输出记录。

这也是在 Hive 之外的 RDBMS 中避免的一般良好做法。在多对多关系之间进行多个内部联接会给您带来很多麻烦。

关于join - 运行 HIVE Join 查询时,Reducers 在 66.68% 时停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171806/

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