当前位置: 首页 > 知识库问答 >
问题:

Hadoop流媒体“cat”和“wc”示例——“cat”映射器和“wc”缩减器实际上是如何工作的

盖和泰
2023-03-14

我的问题是。Apache Hadoop在其文档中提到了以下一个Hadoop流的示例代码:

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \
-input myInputDirs \
-output myOutputDir \
-mapper /bin/cat \
-reducer /bin/wc

现在我向这个流媒体提供一个文本文件。假设,文本文件只包含以下两行:

This is line1
It becomes line2

hadoop流媒体命令工作得很好,没有问题。

但我无法回答以下问题,尽管我在网上多次阅读了上述链接材料和其他例子。假设只有一个映射器和一个减速机:

  1. 据我所知,Mapper获取(键、值)对作为输入。在上述两行中,什么是关键,什么是价值

我知道这些都是非常基本的问题,但我一次又一次地陷入困境,无法得到正确的答案。我会感激你的帮助。

谢谢

共有1个答案

任飞龙
2023-03-14

在上述两行中,什么是关键,什么是价值。

键是行的偏移量。值是整行文本

映射器同时作用于键和值

我相信,映射器的输出对于每一行都是相同的,或者至少是(null,line)。

wc将对每个唯一的键进行操作,因此如果只得到一个结果作为输出,那么输入很可能是(null,[“这一行”,“它变成了第2行]),并且计算值列表

 类似资料:
  • 我在1.1GB文件上运行Hadoop MapReduce多次,使用不同数量的映射器和化简器(例如,1个映射器和1个化简器,1个映射器和2个化简器,1个映射器和4个化简器,...) Hadoop安装在具有超线程的四核机器上。 以下是按最短执行时间排序的前 5 个结果: 1 - 8 个化简器和 1 - 8 个映射器的结果:列 = 映射器行数 = 化简器数 (1)当我有8个映射器时,程序运行速度似乎稍快

  • 我在单个节点上使用hadoop 1.0.1,并尝试使用python 2.7流式传输制表符分隔的文件。我可以让Michael Noll的字数计数脚本使用hadoop/python运行,但无法让这个极其简单的映射器和减速器工作,只是复制文件。这是映射器: 这是减速器: 以下是输入文件的一部分: mapper和reducer在linux中运行良好: 但在我修改映射器和reducer之后,将输入文件移动到

  • 问题内容: 我需要编写脚本以将多行输入输入到程序()。 经过一番谷歌搜索,我发现以下语法有效: 这样可以正确构造多行字符串(从to到inclusive),并将其作为输入传递给。 但是我不知道它如何/为什么起作用,请解释一下吗? 我主要是指,我知道输出到文件,追加到文件,从文件读取输入。 到底是做什么的? 并且有手册页吗? 问题答案: 这称为 heredoc 格式,以将字符串提供给stdin。有关更

  • 我计划开发一个Java的网络应用程序,它将有大量集成的视频(原始内容)从我们的后端流式传输。我很难透过树木看到森林:我希望所有非媒体、客户端内容(超文本标记语言、CSS、JS等)从我的Tomcat服务器提供,但我希望媒体内容(视频)从像Red5或Wowza这样的实际媒体服务器提供。 所以我的问题是:在后端,如何对从两台服务器(Tomcat和媒体服务器)返回内容?

  • Bash Cat With Cat The classic cat command but with a cat. Perfect as an alias. It fallbacks to the original cat if the command is used with pipes.The delimiters adapt to your terminal size. Take a loo

  • 我试图在AWS EMR上运行字数计数示例,但是我很难在集群上部署和运行jar。它是一个自定义的字数示例,其中我使用了一些JSON解析。输入在我的S3桶中。当我试图在EMR集群上运行我的工作时,我得到的错误是在我的Mapper类中找不到主函数。在互联网上的任何地方,字数计数示例映射减少作业的代码就像他们创建的,三个类,一个扩展Mapper的静态映射器类,然后是扩展减少器的减少器,然后是包含作业配置的