hadoop 0.20.2에 대한 간단한 맵 작업을 작성했으며 입력 데이터 세트는 44 개의 파일로 구성되어 있으며 각각은 약 3-5MB입니다. 모든 파일의 각 행은 int,int
형식입니다. 입력 형식은 기본값 인 TextInputFormat
이고 매퍼의 작업은 입력으로 Text
을 구문 분석하여 정수로 변환하는 것입니다.hadoop textinputformat 파일 당 하나의 행만 읽음
작업을 실행 한 후 hadoop 프레임 워크의 통계에 따르면 맵 작업의 입력 레코드 수가 44 개에 불과하다는 것을 알았습니다. 디버그를 시도한 결과 map
의 입력 레코드가 각 파일의 첫 번째 줄에 불과하다는 것을 알았습니다.
누구에게 어떤 문제가 있는지, 어디에서 해결책을 찾을 수 있습니까?
고맙습니다.
편집 1
입력 데이터는 그 출력 형식을 TextOutputFormat<NullWritable, IntXInt>
되는 다른 맵을 줄이고 작업에 의해 생성되었다. IntXInt
의 toString()
방법은 int,int
의 문자열을 제공해야합니다.
편집 2
내 매퍼 3
난 그냥 확인 한 다음
static class MyMapper extends MapReduceBas
implements Mapper<LongWritable, Text, IntWritable, IntWritable> {
public void map(LongWritable key,
Text value,
OutputCollector<IntWritable, IntWritable> output,
Reporter reporter) {
String[] s = value.toString().split(",");
IntXInt x = new IntXInt(s[0], s[1]);
output.collect(x.firstInt(), x.secondInt());
}
}
편집과 같은, 매퍼 실제로, 각 파일의 단 1 라인을 읽어 NOT 전체 파일은 하나의 Text
값입니다.
당신이 당신의 출력을 살펴 있었나요이 라인에 다른 무언가가 있는지 궁금
즉? – smttsp
@greedybuddha : 예. – user1906342
@smttsp : 출력은 44 레코드입니다. – user1906342