mapreduce combinefileinputformat java.lang.reflect.invocationtargetexception,而两个作业访问相同的数据

drkbr07n  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(297)

hadoop mapreduce combinefileinputformat在读取大量小文件时非常有效,但是我注意到有时作业会失败,出现以下异常,
java.lang.runtimeexception:java.lang.reflect.invocationtargetexception位于org.apache.hadoop.mapreduce.lib.input.combinefilerecordreader.initnextrecordreader(combinefilerecordreader)。java:164)在org.apache.hadoop.mapreduce.lib.input.combinefilerecordreader.nextkeyvalue(combinefilerecordreader。java:67)在org.apache.hadoop.mapred.maptask$newtrackingrecordreader.nextkeyvalue(maptask。java:483)在org.apache.hadoop.mapreduce.task.mapcontextimpl.nextkeyvalue(mapcontextimpl。java:76)在org.apache.hadoop.mapreduce.lib.map.wrappedmapper$context.nextkeyvalue(wrappedmapper。java:85)在org.apache.hadoop.mapreduce.mapper.run(mapper。java:139)在org.apache.hadoop.mapred.maptask.runnewmapper(maptask。java:672)在org.apache.hadoop.mapred.maptask.run(maptask。java:330)在org.apache.hadoop.mapred.child$4.run(child。java:268)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:415)在org.apache.hadoop.security.usergroupinformation.doas(用户组信息。
我注意到,只有当其他mapreduce作业同时在同一数据上运行时,才会发生这种情况,否则它将按预期工作。
在类似条件下运行配置单元查询时,甚至会生成相同的异常。
我一直在寻找解决办法或可能的原因。

nwo49xxi

nwo49xxi1#

最后我得到了这个问题的原因,实际上我一直在使用combinefileinputformat和gzip,所以第一个运行的作业是提取同一文件夹中的gzip文件,并在完成时将其删除,但是当我并行运行另一个作业时,它也会将第一个作业在其输入中解压缩的文件。
因此,在执行第二个作业之间,解压文件被第一个作业删除,这实际上是导致错误的原因。
Hive的情况也会类似。

相关问题