我在Hadoop
中实现了WordCount.java
的自定义版本,我有兴趣每个节点输出单词计数。
例如,给定文本:
findme findme ..................................更多大文字... findme findme findme
FindMe node01: 2
FindMe node02: 3
这是我的Mapper
String searchString = "FindMe";
while (itr.hasMoreTokens()) {
String token = itr.nextToken();
if (token.equals(searchString)) {
word.set(token);
context.write(word, one);
}
}
此代码输出
FindMe n
其中n是所有输入中发生的总数。
如何输出每个节点的计数以及该节点的某种标识符,例如我上面提供的示例?
您可以在mapper处输出字符串 主机名,以便您可以为每个节点进行单词计数。
java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost();
String computerName = localMachine.getHostName();
String searchString = "FindMe";
while (itr.hasMoreTokens()) {
String token = itr.nextToken();
if (token.equals(searchString)) {
word.set(token+" "+computerName);
context.write(word, one);
}
}