MapReduce详解

Mapper

/**
 * KEYIN:表示mapper数据输入时候KEY的数据类型,在默认的读取数据组件下,叫InputFormat,它的行为是一行一行的读取待处理的数据
 * 读取一行,返回一行给我们的MR程序。这种情况下,KEYIN就表示每一行的起始偏移量,因此数据类型为Long
 * 
 * VALUEIN:表示mapper数据输入时候VALUE的数据类型,在默认的读取数据组件下,valuein就表示读取的这一行内容,因此数据类型为String
 * 
 * KEYOUT:表示mapper数据输出时候KEY的数据类型,在本案例中,输出的key是单词,因此数据类型是String
 * 
 * VALUEOUT:表示mapper数据输出时候VALUE的数据类型,在本案例中,输出的value是单词的次数,因此数据类型是Integer
 * 
 * 在hadoop中拥有自己封装的数据类型
 * long------LongWritable
 * String----Text
 * Integer----Intwritable
 * null------Nullwritable
 *
 **/
public static class TokenizerMapper extends Mapper<LongWritable, Text, Text, IntWritable>

前两个LongWritable, Text是固定,代表行偏移量和行内容
后两个Text, IntWritable是自定义的,代表map的key和value

Reduce

/**
 * KEYIN:表示reducer阶段输入数据key的类型,对应mapper的输出key类型,在本案例中就是单词--Text
 * VALUEIN:表示reducer阶段输入数据value的类型,对应mapper的输出value类型,在本案例中就是单词次数--IntWritable
 * KEYOUT:表示reducer阶段输出数据key的类型,在本案例中就是单词--Text
 * VALUEOUT:表示reducer阶段输出数据value的类型,在本案例中就是单词总次数--IntWritable
 **/

public static class IntSumReducer extends Reducer
前两个Text, IntWritable对应前文Mapper的Text, IntWritable
后两个 Text, IntWritable对应要输出的数据类型

你可能感兴趣的:(mapreduce,hadoop,大数据)