Передача аргументов в карты Hadoop
Я использую новый API Hadoop и ищу способ передать некоторые параметры (несколько строк) в mappers.
Как я могу это сделать?
Эти решения работают для старого API:
JobConf job = (JobConf)getConf();
job.set("NumberOfDocuments", args[0]);
Здесь "NumberOfDocuments
" - это имя параметра, и его значение считывается из "args[0]
", аргумента командной строки. После того, как вы установите эти аргументы, вы можете получить его значение в редукторе или картографе следующим образом:
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
В основном методе задайте требуемый параметр, как показано ниже, или используя параметр - D при выполнении задания.
Configuration conf = new Configuration();
conf.set("test", "123");
Job job = new Job(conf);
В преобразователе/редукторе получим параметр как
Configuration conf = context.getConfiguration();
String param = conf.get("test");