当我在 map 类中使用以下代码行时:

String fileName = ((FileSplit) context.getInputSplit()).getPath().getName();
System.out.println(fileName);

我得到一个空的输出文件。另外,控制台中的最后两行是:
14/05/06 12:52:53 INFO mapred.JobClient:     Map output records=0
14/05/06 12:52:53 INFO mapred.JobClient:     SPLIT_RAW_BYTES=2127

最佳答案

问题出在System.out.println(),您不会在控制台中得到结果。您需要检查您的日志。

或更简单:使用记录器!

  • 导入日志所需的类
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
  • 定义记录器
    private static final Log LOG = LogFactory.getLog(MyClass.class);
    
  • 记录所有您需要的内容
    LOG.info(fileName);
    

  • 您将在控制台中的作业执行过程中获得结果。

    关于hadoop - 在hadoop中-带有fileplit的Map-Reduce错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23491700/

    10-16 03:21