Отправка переменной в класс Mapper - PullRequest
0 голосов
/ 21 июля 2011

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

Как убедиться, что всякий раз, когда я получаю переменную, она всегда поддерживает одно и то же значение. Я заметил, что job1.setMapperClass (Parallel_for.class); создает экземпляр класса, следовательно, заставляя переменную повторно инициализировать ее первоначальное значение. Ниже приведена ссылка на два класса. Я пытаюсь получить значение раз из класса RunnerTool.

Ссылка на Java TestFor class

Ссылка на класс RunnerTool

// метод настройки в Mapper

@Override
public void setup(Context context) {
    int defaultValue = 1;
    times = context.getConfiguration().getInt("parallel_for_iteration", defaultValue );
    LOG.info(context.getConfiguration().get("parallel_for_iteration") + " Actually name from the commandline");
    LOG.info(times + " Actually number of iteration from the commandline");
}

// Класс RunnerTools

conf.setInt (ITERATION, times);

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Следует отметить, что класс mapper будет воссоздан на многих узлах кластера, поэтому любая инициализация экземпляра класса mapper при выполнении задания не повлияет на другие узлы.Технически релевантный файл / файлы jar будут распределены между узлами, а затем будут созданы средства отображения.Таким образом, как указано в ответе выше, единственный способ передать информацию в мапперы - это использовать класс конфигурации.

0 голосов
/ 21 июля 2011

Mapper get инициализируется отражением, поэтому вы не можете позволить пользователю взаимодействовать с классом mapper.

Вместо этого у вас есть объект Configuration, который вы должны предоставить, если настраиваететвоя работа.Там вы можете установить это, используя conf.set("YOUR KEY", "YOUR VALUE").В вашем классе Mapper вы можете переопределить метод с именем setup(Context context), там вы можете получить значение, используя context.getConfiguration().get("YOUR KEY").И, возможно, сохранить в вашей локальной переменной mapper.

...