Hive 如何在运行简单配置单元查询时强制执行MR?
MR上有Hive 2.1.1,表Hive 如何在运行简单配置单元查询时强制执行MR?,hive,mapreduce,Hive,Mapreduce,MR上有Hive 2.1.1,表test\u table存储为sequencefile和以下特别查询: 选择t* 从测试表t 其中t.test_列=100 虽然可以在不启动MR(获取任务)的情况下执行此查询,但有时扫描HDFS文件比触发单个映射作业需要更长的时间 当我想要强制执行MR执行时,我会使查询更加复杂:例如,使用distinct。这种方法的主要缺点是: 查询结果可能与原始查询的结果不同 给集群带来无意义的计算负载 在MR上使用配置单元时,是否有建议的强制MR执行方法?配置单元执行器根据
test\u table
存储为sequencefile和以下特别查询:
选择t*
从测试表t
其中t.test_列=100
虽然可以在不启动MR(获取任务)的情况下执行此查询,但有时扫描HDFS文件比触发单个映射作业需要更长的时间
当我想要强制执行MR执行时,我会使查询更加复杂:例如,使用distinct
。这种方法的主要缺点是:
在MR上使用配置单元时,是否有建议的强制MR执行方法?配置单元执行器根据以下设置(默认设置)决定执行映射任务或获取任务:
- hive.fetch.task.conversion(“更多”)-将MR任务转换为fetch任务的策略
- hive.fetch.task.conversion.threshold(1 GB)-可馈送到提取任务的输入数据的最大大小
- hive.fetch.task.aggr(false)-当设置为true时,也可以在fetch任务中执行来自src的
select count(*)等查询
有关这些设置的更多详细信息,请参见和。只需添加
set-hive.execution.engine=mr代码>在查询之前,它将强制配置单元使用MR。不清楚“强制MR”是什么意思。配置单元查询始终转换为MR作业。另一点是,如果该工作需要减速器。在简单的“选择”情况下,MR作业仅由映射器组成(即没有还原器)@mangusta在简单的select*
query配置单元执行器可能会退回到“获取任务”而不是“仅映射任务”,因此MR根本不会触发“配置单元2.1.1超过MR”建议使用MR引擎,问题的根源不在所选引擎中