我是hadoop的初学者。 我已经理解了WordCount程序。现在我有一个问题。我不想要所有单词的输出..
- Words_I_Want.txt -
hello
echo
raj
- Text.txt -
hello eveyone. I want hello and echo count
输出应为
hello 2
echo 1
raj 0
现在这是一个例子,我的实际数据是非常大。
答案 0 :(得分:2)
在WordCount example中,Mapper
输出来自输入值和数字1的每个标记化词:
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
output.collect(word, one);
}
如果您只想计算某些单词,那么您是否只想输出Mapper
中与您的列表匹配的单词?
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
if (wordsThatYouCareAbout.contains(token)) {
word.set(token);
output.collect(word, one);
}
}
答案 1 :(得分:0)
matt b的答案对于大到小的连接肯定是好的,但让我们假设你正在进行大到大的连接。
您可以映射Words_I_Want.txt: k:单词,v:某个标记
然后您可以映射Text.txt: k:单词,v:1(与标准单词计数相同)
你必须使用MultipleInputs并找出使用conf.get(“map.input.file”)的文件。
然后在缩小步骤中,只有当键具有标记时才能收集输出。