FileInputFormat 支持文件,单层目录,递归目录

FileInputFormat.addInputPath(job, input);

输入 Path 是 input 参数的值,input 可以是文件也可以是目录,但当 input 是目录时,mapreduce 默认只处理该目录下第一层文件,不能递归处理子目录。

可以通过

FileInputFormat.setInputDirRecursive(job, true);

来使 mapreduce 的输入支持递归处理子目录。有说这是 Hadoop 2.2 之后支持的特性。

还有一种不甚完美的方式,输入用

input/*/*/* 

方式书写,但这个方式缺点很明显:你写几层星号,它就只支持几层,不够灵活。

参:

http://hadoop.apache.org/docs/r2.6.0/api/src-html/org/apache/hadoop/mapreduce/lib/input/FileInputFormat.html