Hadoop Distributed Cache会抛出IOException

时间:2012-04-18 06:40:57

标签: hadoop

使用hadoop 0.20.2并尝试通过分布式缓存读取序列化地图

面临编译错误        localFiles = DistributedCache.getLocalCacheFiles(job);                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        未处理的异常类型IOException

DRIVER类代码段(/scratch/word_id.ser是存储在本地系统中的序列化文件)

    Job job = new Job(conf, "xml-read");
    DistributedCache.addCacheFile(new URI("/scratch/word_id.ser"),job);

MAPPER Class snippet

    public class MyParserMapper1 {

    public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, IntWritable, Text> {

    private FileSystem fs;
    private Path[] localFiles;
    HashMap  hash_temp;
    private ObjectInputStream oisc;

    @Override
    public void configure(JobConf job)   {

     localFiles = DistributedCache.getLocalCacheFiles(job);

    }

1 个答案:

答案 0 :(得分:1)

你的IDE可能有这样的事情的一些自动修复规则,但无论如何,你需要将语句包装在try / catch块中:

@Override
public void configure(JobConf job)   {
  try {
    localFiles = DistributedCache.getLocalCacheFiles(job);
  } catch (IOException ioe) {
    throw new RuntimException(ioe);
  }
}

如果你可以更好地处理异常(例如,如果你仍然可以在没有这个文件的情况下运行你的mapper),那么只需要包装一个未经检查的异常,比如RuntimeException