Передача аргументов картографам Hadoop - PullRequest
15 голосов
/ 23 ноября 2011

Я использую новый Hadoop API и ищу способ передать некоторые параметры (несколько строк) картографам.
Как я могу это сделать?

Это решение работает для старого API :

JobConf job = (JobConf)getConf();
job.set("NumberOfDocuments", args[0]);

Здесь «NumberOfDocuments» - это имя параметра, а его значение читается из «args[0]», aаргумент командной строки.Как только вы установите эти аргументы, вы можете получить его значение в редукторе или преобразователе следующим образом:

private static Long N;
public void configure(JobConf job) {
     N = Long.parseLong(job.get("NumberOfDocuments"));
}

Обратите внимание, что сложная часть заключается в том, что вы не можете установить параметры, подобные этому:

Configuration con = new Configuration();
con.set("NumberOfDocuments", args[0]);

1 Ответ

43 голосов
/ 23 ноября 2011

В методе main установите требуемый параметр, как показано ниже, или используйте параметр командной строки -D во время выполнения задания.

Configuration conf = new Configuration();
conf.set("test", "123");

Job job = new Job(conf);

В преобразователе / ​​редукторе получите параметр как

Configuration conf = context.getConfiguration();
String param = conf.get("test");
...