hadoop-每个节点的单词计数



我在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);
          }
        }

最新更新