我想知道 hadoop 和 hadoop 流的 InputFormats 之间是否有任何区别。hadoop 流的输入格式是否也适用于 hadoop,反之亦然?我问这个是因为我为维基百科转储文件找到了一个特殊的输入格式,wikihadoop InputFormat。那里写着它是hadoop流的输入格式?为什么只用于 hadoop 流式传输?而不是Hadoop?
最好的
我想知道 hadoop 和 hadoop 流的 InputFormats 之间是否有任何区别。hadoop 流的输入格式是否也适用于 hadoop,反之亦然?我问这个是因为我为维基百科转储文件找到了一个特殊的输入格式,wikihadoop InputFormat。那里写着它是hadoop流的输入格式?为什么只用于 hadoop 流式传输?而不是Hadoop?
最好的
据我所知,在 Hadoop 流作业和用 Java 编写的常规 MapReduce 作业之间处理输入的方式没有区别。
的继承树StreamWikiDumpInputFormat
是...
* InputFormat
* FileInputFormat
* KeyValueTextInputFormat
* StreamWikiDumpInputFormat
并且由于它最终实现InputFormat
,它可以用于常规 MapReduce 作业
No.. MR 作业的类型(流式传输或 java)不是使用(或开发)InputFormat 的标准。InputFormat 只是一个 InputFormat,适用于流式传输和 java MR 作业。它是您将要处理的数据类型,您使用(或开发)输入格式。Hadoop 原生提供不同类型的 InputFormat,通常足以满足您的需求。但有时您的数据处于这样一种状态,以至于这些 InputFormats 都无法处理它。
话虽如此,仍然可以使用 MR 处理该数据,这就是您最终编写自己的自定义 InputFormat 的地方,就像您在上面指定的那样。
而且我不知道他们为什么如此强调Hadoop Streaming。它只是一个 Java 类,它完成了 InputFormat 应该做的所有事情,并实现了使它有资格这样做的所有事情。@climbage 对此提出了非常有效的观点。因此,它可以与任何 MR 作业、流式传输或 java 一起使用。
通常的输入格式与为 hadoop 流开发的输入格式没有区别。
当作者说该格式是为 Hadoop Streaming 开发的时,她唯一的意思是她的输入格式生成具有有意义的 toString 方法的对象。而已。
例如,当我开发一种用于 Hadoop Streaming 的输入格式时,我会尽量避免使用 BinaryWritable 并改用 Text。