Передать несколько значений обратно из Hadoop Tools
В Java-приложении Hadoop мне нужно передать множественные целочисленные значения вызывающей стороне из экземпляров MapReduce Tool. До сих пор я пытался и потерпел неудачу следующим образом:
Tool.run()
возвращает одно целочисленное значение своему вызывающему.Configuration.set()
а также.get()
удобны, но, как объяснено здесь, конфигурация задания сериализуется в XML во время выполнения средством отслеживания заданий и копируется во все узлы задачи. Любые изменения в объекте конфигурации будут влиять только на этот объект, который является локальным для конкретной задачи JVM; это не изменит XML на каждом узле.Configuration.getCounter().set()
работает только если звонящий сам расширяетсяConfigured
а такжеgetConf()
вызывается, что невозможно из статических методов- Я считаю, что распределенный кеш доступен только для чтения (следовательно, я на самом деле не пытался его использовать, может, мне следует?)
Есть идеи, как я могу или должен это сделать?
1 ответ
Я решил эту проблему, написав абстрактную оболочку Tool с атрибутом Job, защищенным установщиком и общедоступным получателем.