0

使用 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 类片段

    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);

    }
4

1 回答 1

1

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

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

如果您可以更好地处理异常(即,如果您仍然可以在没有此文件的情况下运行映射器),否则只需包装一个未经检查的异常,如 RuntimeException

于 2012-04-18T10:17:52.123 回答