2011-11-23 5 views
14

새로운 Hadoop API을 사용 중이며 일부 매개 변수 (일부 문자열)를 매퍼에게 전달하는 방법을 찾고 있습니다.
어떻게하면됩니까?Hadoop 매퍼에 인수 전달

This solutions works for old API은 : 여기

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

"NumberOfDocuments은"매개 변수의 이름과 값은 "args[0]"명령 행 인수로부터 판독된다. 이 인수를 설정하면, 다음과 같이 감속기 또는 매퍼에서 그 값을 검색 할 수 있습니다 주요 방법

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

로 매퍼/감속기에서

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

매개 변수를 얻을 : http://www.thecloudavenue.com/2011/11/passing-parameters-to- mappers-and.html – weefwefwqg3

답변

38

을 :

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

주, 까다로운 부분은이 같은 매개 변수를 설정할 수 없다는 것입니다 아래 매개 변수를 설정하거나 작업을 실행하는 동안 -D command line option을 사용하십시오. 신규 및 기존 방법이 여기에 있습니다

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

및 정수 매개 변수를 매퍼에 전달하려면? – MTT

+0

VTT - Configuration 객체에는 유형 안전 setter가 있습니다. setBoolean/setDouble/setEnum/etc ... 해당 getter도 있습니다. –

+1

배열을 설정하려고하는데 다른 방법으로이 작업을 수행 할 수 있습니까? – tosi