나는 hadoop에서 매우 새로 운다. 및 매퍼 이런 입력 INT를 원한다지도 축소 입력 형식
1 2 3 4 6 7 8 //////
3 3 2 1 9 0 5 //////
=== == //////// -----
키 값 /////////
값 3 키 옆에 숫자제 1 내지 제 4? mapper 클래스에서 java로 작성하는 데 plzz 도움을 주시겠습니까?
나는 파일에서 그것을 읽고 싶지 않다.
나는 hadoop에서 매우 새로 운다. 및 매퍼 이런 입력 INT를 원한다지도 축소 입력 형식
1 2 3 4 6 7 8 //////
3 3 2 1 9 0 5 //////
=== == //////// -----
키 값 /////////
값 3 키 옆에 숫자제 1 내지 제 4? mapper 클래스에서 java로 작성하는 데 plzz 도움을 주시겠습니까?
나는 파일에서 그것을 읽고 싶지 않다.
"파일에서 읽지 않으시겠습니까?"라는 것이 무엇을 의미하는지 확신 할 수 없습니다. 당신이해야 할 일은 파일에서 각 줄을 읽고 각 줄을 '//////'로 나누는 것입니다. 당신이 원하는 경우
public static class MapClass extends MapReduceBase implements
Mapper<LongWritable, Text, Text, Text> {
private Text word = new Text();
public void map(LongWritable key, Text value,
OutputCollector<Text, Text> output, Reporter reporter)
throws IOException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line, "//////",
false);
word.set("key:"+tokenizer.nextToken());
output.collect(word, new Text("value="+tokenizer.nextToken()));
}
}
, 당신은 전에 내가 당신이하려는 일을 할 수있는 쉬운 방법 상상 매퍼를 값 에서 키를 나눌 수 있습니다. KeyValueTextInputFormat을 입력 클래스로 사용하여 수행 할 수 있습니다. 이것은 당신이 필요로하는 것과 정확히 동일합니다. 매퍼에 전달 된 값에서 키를 분리하는 구분 기호/구분 기호를 선택할 수 있습니다. 당신은 일을하여 설정합니다 :
job.setInputFormatClass(KeyValueTextInputFormat.class);
은 그럼 당신은 입력하여 구분 기호를 선택할 것 :
Configuration conf = new Configuration(); conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator","//////");
를 그런 다음 당신의 매퍼에 도착했을 때, 그것은 이미 분할입니다.
친애하는 에릭 내가 말해 줄께이 conf는 말해 : 메서드는 setInputFormatClass (클래스 extends InputFormat>) 형식에 인수 (클래스
thnx 대단히 비니 의미 mapreduce 코드에서 내 입력 데이터를 읽을 – Mohammad