在这个其他问题的上下文中
使用 hive.exec.reducers.max 指令真的让我感到困惑。
从我的角度来看,我认为 hive 处理某种逻辑,例如,我在所需的查询中有 N 个块,所以我需要 N 个映射。从 NI 将需要一些合理的 reducer R 范围,它可以是从 R = N / 2 到 R = 1 的任何位置。对于我正在处理的 hive 报告,有 1200 多张地图,并且没有任何影响 hive 制定了大约 400 的计划减速器很好,除了我正在处理一个总共只有 70 个减速器的集群。即使使用公平的作业调度程序,这也会导致积压,从而挂起其他作业。所以我尝试了很多不同的实验,直到找到 hive.exec.reducers.max 并将其设置为 60 左右。
结果是,一个耗时 248 分钟的 Hive 作业在 155 分钟内完成,结果没有任何变化。困扰我的是,为什么不将 hive 默认设置为 N 永远不会大于集群减速器的容量,并且看到我可以使用减少的减速器集翻转数 TB 的数据,然后 hive 认为是正确的,总是尝试更好吗并调整这个计数?