Hive 当文件大于块大小时,如何减少配置单元中映射器的数量?

Hive 当文件大于块大小时,如何减少配置单元中映射器的数量?,hive,mapper,Hive,Mapper,伙计们 我在hive中有一个表,它有720多个分区,每个分区中有400多个文件,文件的平均大小是1G 现在我执行以下SQL: 插入覆盖表test_abc select*from DEFAULT.abc A,其中A.P_HOUR='2017042400' 这个分区(p_HOUR='2017042400')有409个文件。当我提交这个sql时,我得到了以下输出 信息:由于没有reduce运算符,reduce任务数设置为0 信息:拆分次数:409 信息:提交作业令牌:作业148299644961938

伙计们 我在hive中有一个表,它有720多个分区,每个分区中有400多个文件,文件的平均大小是1G

现在我执行以下SQL: 插入覆盖表test_abc select*from DEFAULT.abc A,其中A.P_HOUR='2017042400'

这个分区(p_HOUR='2017042400')有409个文件。当我提交这个sql时,我得到了以下输出

信息:由于没有reduce运算符,reduce任务数设置为0 信息:拆分次数:409

信息:提交作业令牌:作业1482996449619384015

我用谷歌搜索了很多文档来寻找如何减少映射器的数量,很多文档在文件很小的时候解决了这个问题。 我已经尝试了以下直线设置,但没有工作 ---------------第一次

set mapred.min.split.size =5000000000;
set mapred.max.split.size =10000000000;
set mapred.min.split.size.per.node=5000000000;
set mapred.min.split.size.per.rack=5000000000;
-----------------第二次

set mapreduce.input.fileinputformat.split.minsize =5000000000;
set mapreduce.input.fileinputformat.split.maxsize=10000000000;
set mapreduce.input.fileinputformat.split.minsize.per.rack=5000000000;
set mapreduce.input.fileinputformat.split.minsize.per.node=5000000000;
我的hadoop版本是 Hadoop 2.7.2 root于2016年7月11日编译10:58:45 蜂巢版本是 已连接到:Apache Hive(版本1.3.0)
驱动程序:Hive JDBC(1.3.0版)

MRv2使用
CombineInputFormat
,而Tez使用分组拆分来确定映射器。如果您的执行引擎是
mr
,并且希望减少映射程序的使用:

mapreduce.input.fileinputformat.split.maxsize=xxxxx
如果指定了
maxSplitSize
,则同一节点上的块将组合为单个拆分。剩余的块然后与同一机架中的其他块组合。如果未指定
maxSplitSize
,则来自同一机架的块组合在单个拆分中;未尝试创建节点本地拆分。如果
maxSplitSize
等于块大小,则该类类似于Hadoop中的默认拆分行为

如果您的执行引擎是
mr

如果您的执行引擎是
tez
,并且您想要控制映射器,那么请使用:

set tez.grouping.max-size = XXXXXX;

除了您在文章中的设置之外,这里还有一本关于执行引擎的Hive中的并行性的好书

set hive.hadoop.supports.splittable.combineinputformat=true;
hive.hadoop.supports.splitable.combineinputformat
-默认值:false
-添加到:Hive 0.6.0
是否合并小的输入文件以便生成更少的映射程序


(1)
hive.execution.engine
?(2)
DEFAULT.abc
file format?hive.execution.engine=mr SerDe Library:org.apache.hadoop.hive.serde2.lazy.lazympleserde InputFormat:org.apache.hadoop.mapred.TextInputFormat输出格式:org.apache.hadoop.hive.ql.io.hiveignorekeytextoutputformat能否确认执行引擎。是tez还是mr?执行引擎是mr hive.execution.engine=mr@lance-我建议,如果答案对你有用,请接受。@Sandepsing是的,应该是这样。谢谢你提醒我。