(转)hadoop编程笔记

FileInputFormat.setMinInputSplitSize(job, 2L * 1024 * 1024 * 1024);
将使得小于 2G 的输入文件不会被分割处理。如果你的输入文件中有很多都是小于2G的,并且你的Hadoop集群配置了一个split的大小是默认的64M,那么就会导致 一个1点几G的文件就会被很多个map处理,从而导致输出文件数量很多。使用上面的方法设置了min input split size之后,减小输出文件数量的效果很明显。

  编写WordMapper类
在工程下创建一个WordMapper 类,该类要继承Mapper< Object, Text, Text, IntWritable>抽象类,并且实现如下方法。
public void map(Object key, Text value, Context context ) throws IOException, InterruptedException
这个方法是Mapper 抽象类的核心方法,它有三个参数。
Object key:每行文件的偏移量。
Text value:每行文件的内容。
Context context:Map 端的上下文,与 OutputCollector 和 Reporter 的功能类似。

  编写WordReducer 类
在工程下创建一个WordReducer 类,该类要继承Reducer<Text, IntWritable, Text, IntWritable> 抽象类,并且实现如下方法。
public void reduce (Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException
这个方法是Reducer 抽象类的核心方法,它有三个参数。
Text key:Map 端输出的 Key 值。
Iterable<IntWritable> values:Map 端输出的 Value 集合(相同 Key 的集合)。
Context context:Reduce 端的上下文,与 OutputCollector 和 Reporter 的功能类似。

猜你喜欢

转载自qq346359669.iteye.com/blog/2173479