Невозможно прочитать файл последовательности из распределенного кеша в EMR

Я пытаюсь упорядочить файл из распределенного кеша в EMR, но не могу прочитать файл из распределенного кеша в EMR. Мой код отлично работает на локальном компьютере, но у меня возникают проблемы с emr. Вот мой фрагмент кода-

Помещение файла последовательности в распределенный кеш-

job.addCacheFile(new URI(status.getPath().toString()));

Чтение пути-

for (Path eachPath : cacheFilesLocal) {
loadMap(eachPath.getName(),context.getConfiguration());
}

Чтение файла из path-

private void loadMap(String filePath,Configuration conf) throws IOException
    {
        try {
            Path somePath=new Path(filePath);
            reader=new Reader(somePath.getFileSystem(conf),somePath,conf);
        //  brReader = new BufferedReader(new FileReader(filePath));
            Writable key= new Text();
            Writable value=new Text();
            // Read each line, split and load to HashMap
            while (reader.next(key,value)) {
            //  String index[]=strLineRead.toString().split(Pattern.quote(" - "));
                rMap.put(key.toString(),value.toString());
            }
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            if (reader != null) {
                reader.close();
            }
        }
    }

Любая помощь будет оценена.


person Y0gesh Gupta    schedule 02.04.2017    source источник
comment
Я изо всех сил пытаюсь получить доступ к cacheFile в пользовательском JAR.   -  person chetan    schedule 26.09.2017


Ответы (1)


В аргументах укажите путь S3 согласно документации введите здесь описание ссылки

Теперь в классе Driver используйте такие аргументы, как:

job.addCacheFile(new URI(args[3]));
    job.addCacheFile(new URI(args[4]));
    job.addCacheFile(new URI(args[5]));
    job.addCacheFile(new URI(args[5]));

А в маппере использовать файлы кэша как обычно.

cacheFiles = context.getCacheFiles();
        if (cacheFiles != null) {
            File cityCacheFile = new File("AreaCityCountryCache");

работал на меня...

person chetan    schedule 26.09.2017