java - Hadoop - 每个节点的字数

标签 java hadoop mapreduce word-count

我正在 Hadoop 中实现 WordCount.java 的自定义版本,我有兴趣输出每个节点的字数。

例如,给定文本:

FindMe FindMe ..... .... .... .. more big text ... 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);
          }
        }

关于java - Hadoop - 每个节点的字数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009682/

相关文章:

java - Java 中不可修改的 NavigableSet/NavigableMap?

java - 比较 Java 日期并将日期强制为特定时区

hadoop - 什么是 Hadoop block 抽象。需要更多详细信息

hadoop - Hive查询针对Cassandra columnFamily执行时返回null

hadoop - MapReduce:当 2 个 block 分布在不同节点上时,如何进行输入分割?

hadoop - 在hadoop和map reduce中自定义输入格式

java - 使用反射在运行时更改 JLabel 的背景

java - redis.clients.jedis.exceptions.JedisConnectionException : Could not get a resource from the pool

java - Hive - Beeline - 如何将异常从 fileinputformat 传递到 beeline

performance - hadoop大文件不拆分