首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在运行简单的Hive查询时强制执行MR?

如何在运行简单的Hive查询时强制执行MR?
EN

Stack Overflow用户
提问于 2020-06-23 14:13:28
回答 2查看 264关注 0票数 1

在MR上有Hive2.1.1,表test_table存储为顺序文件和以下临时查询:

代码语言:javascript
运行
复制
select t.*
  from test_table t
 where t.test_column = 100

虽然可以在不启动MR (fetch任务)的情况下执行此查询,但有时扫描HDFS文件要花费更长的时间,而不是触发单个映射作业。

当我想执行MR执行时,我会使查询更加复杂:例如,使用distinct。这种方法的主要缺点是:

  1. 查询结果可能与原始查询的结果不同
  2. 给集群带来无意义的计算负载。

在使用Hive时,是否有强制执行MR的推荐方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-23 14:13:28

单元执行程序根据以下设置(在默认情况下)决定执行map任务或获取任务:

  • hive.fetch.task.conversion (“更多”)-将MR任务转换为获取任务的策略
  • hive.fetch.task.conversion.threshold (1GB)-可以输入到获取任务的最大输入数据大小
  • hive.fetch.task.aggr (false) -当设置为true时,也可以在获取任务中执行像select count(*) from src这样的查询

它提示我有以下两个选项:

  1. hive.fetch.task.conversion.threshold设置为较低的值,例如512 Mb
  2. hive.fetch.task.conversion设置为“无”

由于某些原因,在我的情况下,降低阈值并没有改变任何事情,所以我支持第二种选择:似乎适合临时查询。

有关这些设置的更多详细信息可以在Cloudera论坛蜂巢维基中找到。

票数 1
EN

Stack Overflow用户

发布于 2020-06-23 15:47:39

只需在查询之前添加set hive.execution.engine=mr;,它将强制Hive使用MR. .

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62536791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档