3
일부 'n'키를 처리 한 후에 reduce 기능을 중단하려는 reduce 기능이 있습니다. 나는 각 키의 증가분에 카운터를 설정하고, 조건부에서 reduce 함수의 반환을 만족시킨다.Stop 하둡에서 기능 감소시키기
는 여기에 내가이를 다른 방법이 있나요 코드
public class wordcount {
public static class Map extends Mapper<LongWritable, Text, IntWritable, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
private IntWritable leng=new IntWritable();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
String lword=tokenizer.nextToken();
leng.set(lword.length());
context.write(leng, one);
}
}
}
public static class Reduce extends Reducer<IntWritable, IntWritable, IntWritable, IntWritable> {
int count=0;
public void reduce(IntWritable key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
count++;
}
context.write(key, new IntWritable(sum));
if(count>19) return;
}
}
입니다.
곰이 작업을 수행 할 수 있습니다. 예를 들어, 10 개의 키 이후에 멈추고 싶지만 2 개의 감속기가 있다면 총 20 개의 키를 처리해야합니다. 작업을 시작할 때 어디에서든지이 제한을 외부에서 제어해야합니다. – Quetzalcoatl
필요한 최상위 n 키 조건을 달성하기 위해 단일 감속기를 사용하고 있습니다. 메모 주셔서 감사. – Skandy