是否可以执行没有输入文件的 Hadoop Streaming 作业?
在我的用例中,我能够使用单个映射器和执行参数为减速器生成必要的记录。目前,我正在使用带有单行的存根输入文件,我想删除此要求。
我们考虑了 2 个用例。
1)
根据docs这是不可能的。以下是执行所需的参数:
看起来提供虚拟输入文件是目前的解决办法。
不,无法执行没有输入文件的 Hadoop Streaming 作业。
mapred streaming
必需的唯一两个选项是
-input
和-output
。
mapred streaming [genericOptions] [streamingOptions]
其中流选项是以下一项或多项
-input <directoryname> or <filename>
必填(映射器输入位置)-output <directoryname>
必填(减速机输出位置)-mapper <executable> or <JavaClassName>
可选(Mapper 可执行文件。如果未指定,则默认使用 IdentityMapper)-reducer <executable> or <JavaClassName>
可选(Reducer 可执行文件。如果未指定,则默认使用 IdentityReducer)[ . . . ]
所有其他选项都是可选的这就是一个非常简单的 MapReduce 流作业的方式:
mapred streaming \
-input my_input \
-output my_output
此作业只会将
my_input
的内容回显为 my_output
,而每一行都会转换为由制表符分隔的 <key>, <value>
对。