2015-03-04 2 views
0

В настоящее время я пытаюсь добавить два файла в распределенный кэш. Однако, когда я пытаюсь прочитать его, второй файл читает те же данные, что и первый файл, хотя в двух файлах хранятся совершенно разные данные. Любая идея, почему это происходит?Чтение нескольких файлов в распределенный кеш в map -reduce

ответ

0

Скорее всего, как вы на самом деле настраиваете задание, а затем получаете доступ к ним в Mapper. Когда вы настраиваете работу вы собираетесь сделать что-то вроде

job.addCacheFile(new Path("cache/file1.txt").toUri()); 
job.addCacheFile(new Path("cache/file2.txt").toUri()); 

Затем в коде картографа URL-адрес будет храниться в массиве, которые могут быть доступны, как так.

URI file1Uri = context.getCacheFiles()[0]; 
URI file2Uri = context.getCacheFiles()[1]; 

Если этот процесс доступа к вашим файлам не работает, может возникнуть проблема с фактическими файлами.

+0

Я использую распределенный кеш. Но когда я пытаюсь прочитать оба файла, используя: Путь p1 = DistributedCache.getLocalCacheFile (context.getConfiguration()) [0]; Путь p2 = DistributedCache.getLocalCacheFile (context.getConfiguration()) [1]; Тогда значение обоих путей одинаково, хотя я добавляю два разных файла. – explorer

+0

Вам понадобится некоторое время отлаживать. Просто попробуйте некоторые вещи, например, добавить больше кеш-файлов или распечатать все результаты распределенного кеша. – mross1080

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