使用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);
}
答案 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