gpt4 book ai didi

hadoop - 强制 HiveServer2 运行 MapReduce 作业

转载 作者:行者123 更新时间:2023-12-05 07:23:06 26 4
gpt4 key购买 nike

我正在使用 hive-1.1.0。通过只读且不包含谓词的 Beeline 向 HiveServer2 提交查询将导致 HiveServer2 尝试从 HDFS 本​​身读取数据而不产生 MapReduce 作业:

SELECT * FROM my_table LIMIT 100;

对于非常大的数据集,这可能会导致 HiveServer2 占用大量内存,从而导致长时间的垃圾收集暂停。添加一个“假”谓词将导致 HiveServer2 根据需要运行 MapReduce 作业;例如

SELECT * FROM my_table WHERE (my_id > 0 OR my_id <= 0) LIMIT 100;

“假”是指无关紧要的谓词;上面的示例谓词将始终为真。是否有强制 HiveServer2 始终运行 MapReduce 作业而无需添加虚假谓词的设置?

我不是在谈论 HiveServer2 何时确定它可以在本地运行 MapReduce 作业;我完全禁用了这个:

> SET hive.exec.mode.local.auto;
+----------------------------------+--+
| set |
+----------------------------------+--+
| hive.exec.mode.local.auto=false |
+----------------------------------+--+

但是没有谓词的查询仍然会被 HiveServer2 完全读取,从而导致问题。

非常感谢任何指导。谢谢!

最佳答案

一些选择查询可以转换为单个 FETCH 任务,根本不需要 map-reduce。

此行为由 hive.fetch.task.conversion 配置参数控制。可能的值为:noneminimalmore

如果你想禁用fetch任务转换,设置为none:

set hive.fetch.task.conversion=none;

minimal 将触发 FETCH-only 任务

SELECT *, FILTER on partition columns (WHERE and HAVING clauses),LIMIT only.

more 将触发 FETCH-only 任务

SELECT any kind of expressions including UDFs, FILTER, LIMIT only(including TABLESAMPLE, virtual columns)

另请阅读有关 hive.fetch.task.conversion.threshold 参数和更多详细信息:Hive Configuration Properties

关于hadoop - 强制 HiveServer2 运行 MapReduce 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192471/

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