FAQ - which exceeds 100000. Killing the job
更新时间: 2024-03-11 02:45:35
阅读 1021
FAQ - which exceeds 100000. Killing the job
问题描述/异常栈
[Fatal Error] total number of created files now is 100576, which exceeds 100000. Killing the job
发现版本
HIVE 2.1.1
解决方案
1、使用 distributed by 分区字段,可以使用 DISTRIBUTE BY rand()将数据随机分配给Reduce(使用示例见下文截图)
2、如果Reduce数量太多,则减少reduce的数量
3、进行一些参数设置
设置 mapper输入参数:
set mapred.max.split.size=256000000; #每个Map最大输入大小
set mapred.min.split.size.per.node=100000000;
设置 map、reduce输出参数
hive.merge.mapfiles= true #设置 map输出和reduce输出进行合并的相关参数
hive.merge.mapredfiles= true 设置reduce端输出进行合并,默认为false
hive.merge.size.per.task= 256 *1000 * 1000 设置合并文件的大小
hive.merge.smallfiles.avgsize=16000000 输出文件的平均大小小于该值时,启动一个独立的MapReduce任务进行文件merge
问题原因
Hive对文件创建的总数是有限制的,这个限制取决于参数:hive.exec.max.created.files,默认值是100000。
这里有情况,就是如果你是往分区表里面插入数据。如果现在你的表有60个分区,然后你总共有2000个map或者reduce,在运行的时候,每一个mapper或者reduce都会创建60个文件,对应着每一个分区,所以60*2000> 120000,就会报错:exceeds 100000.Killing the job
作者:xxx
文档反馈
以上内容对您是否有帮助?