我有很多小的输入文件,我想使用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 \
...
Example of CombineFileInputFormat