我想计算文本中每行单词的共现次数,比如一个单词与其他单词出现在同一行的次数。为此,我创建了一个特殊的单词对类,因此mapreduce将给我一对单词,然后是计数。问题是,我只想展示不同单词的共现。
代码如下:
public class Co_OcurrenciaMapper extends Mapper<LongWritable, Text, Par, IntWritable> {
@Override
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
IntWritable one = new IntWritable(1);
String[] palabras = value.toString().split("\\W+");
String palabra = new String();
String vecino = new String();
if (palabras.length > 1) {
for (int i = 0; i < palabras.length - 1; i++) {
for (int j = i + 1; j < palabras.length; j++) {
palabra = palabras[i];
vecino = palabras[j];
if (palabra.length() == 0 || vecino.length() == 0 || Character.isDigit(palabra.charAt(0)) || Character.isDigit(vecino.charAt(0))) {
continue;
}
if (palabra.compareTo(vecino) != 0) {
context.write(new Par(palabras[i], palabras[j]), one); /* here I am trying to go to the next pair if the words in the current pair are the same */
}
}
}
}
}
}
}
“par”是包含一对单词的新类。
这是Map器输出:
[cloudera@quickstart ~]$ hadoop fs -cat salidaO34/part-r-00000 |tail -15
Par [young , youthful] 1
Par [younger , your] 5
Par [your , your] 88
Par [your , yours] 23
Par [your , yourself] 36
Par [your , yourselves] 8
Par [your , youth] 18
Par [your , youthful] 3
Par [your , zeal] 3
Par [your , zir] 1
Par [your , zounds] 1
Par [yours , yours] 2
Par [yours , yourself] 3
Par [yours , zeal] 1
Par [yourself , yourself] 1
你可以看到我有两对相同的词。
1条答案
按热度按时间gojuced71#
试着先剪线。