I'd like TextInputFomat and TextOutputFormat to automatically compress and uncompress text files when they are read and written. Furthermore, I'd like to be able to use custom compressors as defined in
HADOOP-441. Therefore, I propose:
Adding a map of compression codecs in the server config files:
io.compression.codecs = "<suffix>=<codec class>,..."
so the default would be something like:
<description>A list of file suffixes and the codecs for them.</description>
note that the suffix can include multiple "." so you could support suffixes like ".tar.gz", but they are just treated as literals against the end of the filename.
If the TextInputFormat is dealing with such a file, it:
1. makes a single split
2. decompresses automatically
On the output side, if mapred.output.compress is true, then TextOutputFormat would use a new property mapred.output.compression.codec that would define the codec to use to compress the outputs, defaulting to gzip.