MapReduce 的类型
- reduce函数的输入类型必须与map函数的输出类型匹配,但reduce函数的输出类型可以不同于输入类型
输入格式
- 输入分片与记录
- 一个输入分片就是一个由单个map操作来处理的输入块 InputSplit接口
- 文本输入
- TextInputFormat
- 控制一行最大的长度
- KeyValueTextInputFormat
- NLineInputFormat
- XML
- 二进制输入
- SequenceFileInputFormat
- SequenceFileAsTextInputFormat
- SequenceFileAsBinaryInputFormat
- FixedLengthInputFormat
- 多个输入
- MultipleInputs
- 数据库输入和输出
- DBInputFormat 这种输入格式用于使用JDBC从关系型数据库中读取数据。因为它没有任何共享能力,所以在访问数据库的时候必须非常小心,在数据库中运行太多的mapper读数据可能会使数据库受不了。
- 另一种方法是Sqoop
输出格式
OutputFormat
- 文本输出
- TextOutputFormat
- 键-值对由制表符进行分隔,设定mapreduce.output.textoutputformat.separator属性改变默认的分隔符
- 对应的输入格式是KeyValueTextInputFormat
- 二进制输出
- SequenceFileOutputFormat
- SequenceFileAsBinaryOutputFormat
- MapFileOutputFormat
- 多个输出
- MultipleOutputFormat
- MultipleOutput 类可以将数据写到多个文件
- 延迟输出
- LazyOutputFormat
FileOutputFormat 的子类会产生输出文件(part-r-nnnnn),即使文件是空的。有些应用倾向于不创建空文件
- LazyOutputFormat
- 数据库输出