0

我想知道 hadoop 和 hadoop 流的 InputFormats 之间是否有任何区别。hadoop 流的输入格式是否也适用于 hadoop,反之亦然?我问这个是因为我为维基百科转储文件找到了一个特殊的输入格式,wikihadoop InputFormat。那里写着它是hadoop流的输入格式?为什么只用于 hadoop 流式传输?而不是Hadoop?

最好的

4

3 回答 3

0

据我所知,在 Hadoop 流作业和用 Java 编写的常规 MapReduce 作业之间处理输入的方式没有区别。

的继承树StreamWikiDumpInputFormat是...

* InputFormat
  * FileInputFormat
    * KeyValueTextInputFormat
      * StreamWikiDumpInputFormat

并且由于它最终实现InputFormat,它可以用于常规 MapReduce 作业

于 2013-06-14T15:51:46.933 回答
0

No.. MR 作业的类型(流式传输或 java)不是使用(或开发)InputFormat 的标准。InputFormat 只是一个 InputFormat,适用于流式传输和 java MR 作业。它是您将要处理的数据类型,您使用(或开发)输入格式。Hadoop 原生提供不同类型的 InputFormat,通常足以满足您的需求。但有时您的数据处于这样一种状态,以至于这些 InputFormats 都无法处理它。

话虽如此,仍然可以使用 MR 处理该数据,这就是您最终编写自己的自定义 InputFormat 的地方,就像您在上面指定的那样。

而且我不知道他们为什么如此强调Hadoop Streaming。它只是一个 Java 类,它完成了 InputFormat 应该做的所有事情,并实现了使它有资格这样做的所有事情。@climbage 对此提出了非常有效的观点。因此,它可以与任何 MR 作业、流式传输或 java 一起使用。

于 2013-06-15T01:01:12.500 回答
0

通常的输入格式与为 hadoop 流开发的输入格式没有区别。

当作者说该格式是为 Hadoop Streaming 开发的时,她唯一的意思是她的输入格式生成具有有意义的 toString 方法的对象。而已。

例如,当我开发一种用于 Hadoop Streaming 的输入格式时,我会尽量避免使用 BinaryWritable 并改用 Text。

于 2016-01-18T14:49:19.230 回答