나는 Hadoop MapReduce에 대한 상대적으로 초보자입니다. WordCount 샘플 변형본을 http://archive.cloudera.com/cdh/3/hadoop/mapred_tutorial.html에 시도했습니다. 내 소스 파일에 추가 열이 있으며 합계가 발생해야하는 열을 지정할 수 있기를 원합니다.Hadoop MapReduce Configuration 객체를 사용하여 맞춤 매개 변수를 전달하려면 어떻게해야합니까?
run (...) 메소드 (87 행부터 116 행)에는 명령 행에서 전달 된 인수가 있습니다. 구분 기호가있는 인수와 필터링을 수행 할 열 위치가있는 인수가 두 가지 추가 인수가 있습니다. 나는 구성 (샘플의 28 행) 방식으로이 값을 가져올 때
내가
if (args.length == 5) {
conf.set("ipPosition", args[4]);
}
if (args.length == 6) {
conf.set("delimiter", args[5]);
}
이러한 값을 설정하고는 그러나, 그들은 null을 반환한다.
public void configure(JobConf job) {
try {
String varIpPosition = job.get("ipPosition");
if (varIpPosition != null) {
ipPosition = Integer.parseInt(varIpPosition);
}
String varDelimiter = job.get("delimiter");
if (varDelimiter != null) {
if (varDelimiter == "comma") {
lineDelimiter = ",";
} else {
lineDelimiter = " ";
}
}
System.err.println("IP Position" + ipPosition);
} catch (Exception ex) {
System.err.println("Error Configuring Job :"
+ job.get("ipPosition") + " - "
+ StringUtils.stringifyException(ex));
}
}
구성 매개 변수를 잘못 설정했거나 잘못 검색합니까? 어떤 도움을 주셔서 감사합니다.
그래, 그건 내 잘못이다. If 조건이 모두 아래에 해당한다고 어떻게 기대합니까? if (args.length == 5) { conf.set ("ipPosition", args [4]); } if (args.length == 6) { conf.set ("delimiter", args [5]); } 금요일 저녁 코딩은 분명히 나쁜 아이디어입니다. 조건을 수정 한 후 코드는 훌륭하게 작동합니다. 문제가있는 사람들에게 불편을 끼쳐 드려 죄송합니다. – sumitkm