文件中使用getcodec()方法,可以将文件属性名映射到一个CompressionCodec,该去文件的Path对象当参数。
CodecPool使用原生的代码库并且需要在用执行中执行大量解压和压缩,可以分摊这些开销。
对于Job的任务的输出压缩,conf.setBoolean("mapred.output.compression",true);
conf.setClass("mapred.output,compression.codec",GzipCodec.classs);
对map任务压缩,在map的输出中设置,conf.setCompressMapOutput(true);conf.setMapOutputComprssionClass(GzipCodec.class).
序列化和反序列化,将一个对象使用DataOutput转成二进制,或者从二进制使用DataInput获得一个对象。WritbleComparable和Comparator可以进行序列化的数值比较。
Text类和Java String类之间存在一定的差别,对Text类的索引是根据编码后字节序列中的位置实现的,并非字符中的Unicode字符,也不是Java Char编码单元。
Writable集合类:ArrayWritble,TwoDArrayWritable,MapWritable和SortedWritable,TwoDArrayWritble。
实现定制的Writable类型,继承WritableComparable。
Avro,AVRO数据文件是支持切分的,Avro提供了一组让MapReduce程序在AVRO数据上简单运行的类,在org.apache.avro.mapreduce等。
SequenceFile,对于基于MapReduce的数据处理,将每个二进制数据大对象(blob)融入自己的文件总并不能每一条日志记录是一行文本,通过sequenceFile类型将小文件包括起来,可以获得更高效率的存储和处理。
MapFile是已经排序的SequenceFile,它加入永远搜索键的索引,它的大小可以设置为保存在内存的Map的大小。