>我有很多小的输入文件,我想使用一些输入格式(如CombineFileInputFormat
)将它们组合在一起,以启动更少的映射器任务。我知道我可以使用Java API来做到这一点,但我不知道在使用Hadoop流时是否有一个流jar库来支持这个功能。
Hadoop流默认使用TextInputFormat
,但可以使用任何其他输入格式,包括CombineFileInputFormat
。您可以使用选项 -inputformat
从命令行更改输入格式。请务必使用旧的 API 并实现org.apache.hadoop.mapred.lib.CombineFileInputFormat
。尚不支持新的 API。
$HADOOP_HOME/bin/hadoop jar
$HADOOP_HOME/hadoop-streaming.jar
-inputformat foo.bar.MyCombineFileInputFormat
-Dmapred.max.split.size=524288000
-Dstream.map.input.ignoreKey=true
...
组合文件输入格式的示例