Передать несколько значений обратно из Hadoop Tools

В Java-приложении Hadoop мне нужно передать множественные целочисленные значения вызывающей стороне из экземпляров MapReduce Tool. До сих пор я пытался и потерпел неудачу следующим образом:

  • Tool.run() возвращает одно целочисленное значение своему вызывающему.
  • Configuration.set() а также .get() удобны, но, как объяснено здесь, конфигурация задания сериализуется в XML во время выполнения средством отслеживания заданий и копируется во все узлы задачи. Любые изменения в объекте конфигурации будут влиять только на этот объект, который является локальным для конкретной задачи JVM; это не изменит XML на каждом узле.
  • Configuration.getCounter().set() работает только если звонящий сам расширяется Configured а также getConf() вызывается, что невозможно из статических методов
  • Я считаю, что распределенный кеш доступен только для чтения (следовательно, я на самом деле не пытался его использовать, может, мне следует?)

Есть идеи, как я могу или должен это сделать?

1 ответ

Я решил эту проблему, написав абстрактную оболочку Tool с атрибутом Job, защищенным установщиком и общедоступным получателем.

Другие вопросы по тегам