Хранить TreeSet в Hadoop DistributedCache

Я пытаюсь сохранить TreeSet в DistributedCache для использования заданием уменьшения карты Hadoop. Пока у меня есть следующее для добавления файла из HDFS в DistributedCache:

Configuration conf = new Configuration();
DistributedCache.addCacheFile(new URI("/my/cache/path"), conf);
Job job = new Job(conf, "my job");
// Proceed with remainder of Hadoop map-reduce job set-up and running

Как мне эффективно добавить TreeSet (который я уже построил в этом классе) в этот файл, который я добавляю в DistributedCache? Должен ли я использовать собственную сериализацию Java, чтобы как-то сериализовать это в файл?

Обратите внимание, что TreeSet создается один раз в основном классе, который запускает задания по уменьшению карты. TreeSet никогда не будет изменен, и я просто хочу, чтобы каждый картограф имел доступ только для чтения к этому TreeSet без необходимости перестраивать его снова и снова.


person socoho    schedule 21.04.2013    source источник


Ответы (1)


Сериализация TreeSet кажется подходом. В этом случае вам не нужно создавать HashMap. Просто десериализуйте TreeSet из файла и используйте методы для поиска по ключу. Мне нравится этот подход.

person Rags    schedule 22.04.2013