Я новичок в MapReduce приложениях. Я просто пытаюсь найти длину слов в своем наборе данных и классифицировать их как крошечные, маленькие, медные, огромные по своей длине, и в конце концов, я хочу видеть общее количество, сколько слов крошечное, малое, среднее или огромный на моем наборе данных на Java, но у меня есть проблема с внедрением редуктора. Когда я выполняю файл jar на кластере Hadoop, он не возвращает никакого результата. Если кто-нибудь даст мне руку, я буду благодарен. Вот код редуктора, который я пытаюсь выполнить, но у меня много ошибок, я думаю.Категорирование слов по их длине на редукторе
public class WordSizeReducer extends Reducer<IntWritable, IntWritable, Text, IntWritable> {
private IntVariable result = new IntVariable();
IntWritable tin, smal, mediu,bi;
int t, s, m, b;
int count;
Text tiny, small, medium, big;
public void reduce(IntWritable key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{
for (IntWritable val:values){
if(val.get() == 1){
tin.set(t);
t++;
}
else if(2<=val.get() && val.get()<=4){
smal.set(s);
s++;
}
else if(5<=val.get() && val.get()<=9){
mediu.set(m);
m++;
}
else if(10<=val.get()){
bi.set(b);
b++; }
}
context.write(tiny, tin);
context.write(small, smal);
context.write(medium, mediu);
context.write(big, bi);
}
}
public class WordSizeMapper extends Mapper<LongWritable, Text, IntWritable, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private IntWritable wordLength = 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()) {
wordLength.set(tokenizer.nextToken().length());
context.write(wordLength, one);
}
}
}
по электронной почте Ой вы правы.Я изменил те точки, о которых вы говорили, но я думаю, что у меня проблема с логикой, как я могу исправить код, я не смог его получить. –
Каждый из «крошечных», «малых», «средних» и «больших» должен быть установлен на другой текст, например. 'Text tiny = new Text (" tiny ");' (Также лучше избегать обновления кода в вашем вопросе, так что ответы все еще имеют смысл, когда люди читают их позже!) – DNA
Возможно, вы также захотите добавить некоторые записи, что вы можете видеть, что происходит. – DNA