首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop WordCount输出

Hadoop WordCount输出
EN

Stack Overflow用户
提问于 2014-07-12 09:33:57
回答 2查看 502关注 0票数 0

我是hadoop的新手,为了更熟悉它,我正在运行一些示例。我运行了wordcount,当我检查输出部分时,我得到了3个目录,而不是通常的名为hadoop fs -cat outt /hadoop fs -cat outt-00000的目录。下面是我拥有的目录:

代码语言:javascript
复制
-rw-r--r--   1 hadoop supergroup          0 2014-07-11 20:13 outt/_SUCCESS 
-rw-r--r--   1 hadoop supergroup         15 2014-07-11 20:13 outt/part-r-00000
-rw-r--r--   1 hadoop supergroup          0 2014-07-11 20:13 outt/part-r-00001

我的文件只说"Hello World“,所以我期待结果: Hello 1 World 1。

有人知道如何获得正确的输出吗?

EN

回答 2

Stack Overflow用户

发布于 2014-07-12 14:32:50

1.) _success和part-r-00000/1不是目录,而是文件。目录更像是一组文件和其他目录

2.)如果提交的作业被所有节点和reducers成功执行且结果集完整,hadoop会自动创建_Success文件。

3.)如果你得到两个零件文件,这意味着你的工作描述中有两个减速器。检查代码,看看是否有类似job.setNumReduceTasks(2);的语句。名为00000的零件是第一个减速器的输出,00001是第二个减速器的输出。'r‘表示输出来自reducer。如果看到的是'm‘而不是'r’,这意味着你没有一个减速机,这个工作是只有map的工作。

票数 2
EN

Stack Overflow用户

发布于 2014-07-13 13:59:36

当您执行hadoop fs -cat outt/part-r-00000并获得如下输出时: record_count 1

这意味着您可能正在计算输入文件中的行数。

读取一行后,需要对该行进行标记,并从中提取每个单词(标记)。

以下是示例代码:

代码语言:javascript
复制
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
  word.set(tokenizer.nextToken());
  context.write(word, one);
}  

你可以在这里找到完整的代码:WordCount

这里,你可以拆分java API的方法,而不是StringTokenizer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24708766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档