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 に答える