作业失败异常hadoop

zynd9foi  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(298)

我使用多文本输出格式来创建一个文件的多个文件,即新文件上的每一行。
这是我的密码:

public class MOFExample extends Configured implements Tool {

private static double count = 0;

static class KeyBasedMultipleTextOutputFormat extends
        MultipleTextOutputFormat<Text, Text> {
    @Override
    protected String generateFileNameForKeyValue(Text key, Text value,
            String name) {
        return count++ + "_";// + name;
    }
}

/**
 * The main job driver.
 */
public int run(final String[] args) throws Exception {
    Path csvInputs = new Path(args[0]);
    Path outputDir = new Path(args[1]);

    JobConf jobConf = new JobConf(super.getConf());
    jobConf.setJarByClass(MOFExample.class);
    jobConf.setMapperClass(IdentityMapper.class);

    jobConf.setInputFormat(KeyValueTextInputFormat.class);
    jobConf.setOutputFormat(KeyBasedMultipleTextOutputFormat.class);
    jobConf.setOutputValueClass(Text.class);
    jobConf.setOutputKeyClass(Text.class);
    FileInputFormat.setInputPaths(jobConf, csvInputs);
    FileOutputFormat.setOutputPath(jobConf, outputDir);
    //jobConf.setNumMapTasks(4);
    jobConf.setNumReduceTasks(4);
    return JobClient.runJob(jobConf).isSuccessful() ? 0 : 1;
}

public static void main(final String[] args) throws Exception {
    int res = ToolRunner.run(new Configuration(), new MOFExample(), args);
    System.exit(res);
}
}

此代码在小文本文件上运行良好,但当输入文件的行数大于1900(这不是大文件)时,它会引发异常:
线程“main”java.io.ioexception中出现异常:作业失败!在org.apache.hadoop.mapred.jobclient.runjob(jobclient。java:836)在mofexample.run(mofexample。java:57)在org.apache.hadoop.util.toolrunner.run(toolrunner。java:70)在mofexample.main(mofexample。java:61)
我也尝试过这个教程,但是当输入文件很大时,这个教程会毫无例外地返回空的输出目录,但是对于小的输入文件,这个教程也可以很好地工作。
注意:我使用的是单节点集群

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题