我想知道hadoop和hadoop流的InputFormats之间是否存在任何差异。 hadoop流的输入格式是否也适用于hadoop,反之亦然? 我问这个是因为我找到了wikipedia转储文件的特殊输入格式,即wikihadoop InputFormat。有人写道,它是hadoop流的输入格式?为什么只有hadoop流媒体?而不是hadoop?
贝斯茨
答案 0 :(得分:0)
据我所知,Hadoop流作业与用Java编写的常规MapReduce作业之间的输入处理方式没有区别。
StreamWikiDumpInputFormat
的继承树是......
* InputFormat
* FileInputFormat
* KeyValueTextInputFormat
* StreamWikiDumpInputFormat
由于它最终实现了InputFormat
,因此可以在常规MapReduce作业中使用
答案 1 :(得分:0)
否.. MR作业的类型(流式传输或java)不是使用(或开发)InputFormat的标准。 InputFormat只是一个InputFormat,可用于流式和java MR作业。它是您要处理的数据类型,基于您使用(或开发)InputFormat。 Hadoop原生提供不同类型的InputFormats,通常足以满足您的需求。但有时你的数据处于这样一种状态,即这些InputFormats都不能处理它。
话虽如此,仍然可以使用MR处理该数据,这就是您最终编写自己的自定义InputFormat的地方,就像您在上面指定的那样。
我不知道为什么他们如此强调Hadoop Streaming。它只是一个Java类,可以完成InputFormat应该执行的所有操作,并实现使其有资格执行此操作的所有内容。 @climbage对此也提出了非常有效的观点。因此,它可以用于任何MR作业,流媒体或java。
答案 2 :(得分:0)
通常的输入格式与为hadoop流式开发的格式之间没有区别。
当作者说为Hadoop Streaming开发格式时,她唯一意味着她的输入格式会生成带有有意义的toString方法的对象。就是这样。
例如,当我在Hadoop Streaming中开发用于输入格式的输入格式时,我尝试避免使用BinaryWritable并使用Text。