2012-04-18 6 views
0

с помощью Hadoop 0.20.2 и пытается читать упорядоченную карту через распределенный кэшHadoop Distributed Cache бросает IOException

облицовочным ошибка компиляции localFiles = DistributedCache.getLocalCacheFiles (работу); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Необработанное исключение типа IOException

ВОДИТЕЛЬ Класс сниппает (/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); 

    } 

ответ

1

Ваш IDE, вероятно, имеют некоторые правила автокоррекции для таких вещей, но в любом случае вам нужно обернуть оператор в блок try/catch:

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

Если вы можете справиться с исключением, тем лучше (т. если вы все еще можете запустить свой карппер без этого файла), но в противном случае просто оберните в неконтролируемое исключение, такое как RuntimeException

Смежные вопросы