分享

分析mapreduce各个步骤

pig2 发表于 2014-6-12 15:36:56 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 2027
执行步骤:
1. map任务处理
        1.1 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。
        1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
        1.3 对输出的key、value进行分区。
        1.4 对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。
        1.5 (可选)分组后的数据进行归约。
2.reduce任务处理
        2.1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。

        2.2 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。

        2.3 把reduce的输出保存到文件中。

        例子:实现WordCountApp

/**
         * KEYIN        即k1                表示行的偏移量
         * VALUEIN        即v1                表示行文本内容
         * KEYOUT        即k2                表示行中出现的单词
         * VALUEOUT        即v2                表示行中出现的单词的次数,固定值1
         */


        static class MyMapper extends Mapper<LongWritable, Text, Text, LongWritable>{
                protected void map(LongWritable k1, Text v1, Context context) throws java.io.IOException ,InterruptedException {
                        final String[] splited = v1.toString().split("\t");
                        for (String word : splited) {
                                context.write(new Text(word), new LongWritable(1));
                        }
                };
        }
        

        /**
         * KEYIN        即k2                表示行中出现的单词
         * VALUEIN        即v2                表示行中出现的单词的次数
         * KEYOUT        即k3                表示文本中出现的不同单词
         * VALUEOUT        即v3                表示文本中出现的不同单词的总次数
         *
         */
        static class MyReducer extends Reducer<Text, LongWritable, Text, LongWritable>{
                protected void reduce(Text k2, java.lang.Iterable<LongWritable> v2s, Context ctx) throws java.io.IOException ,InterruptedException {
                        long times = 0L;
                        for (LongWritable count : v2s) {
                                times += count.get();
                        }
                        ctx.write(k2, new LongWritable(times));
                };
        }


没找到任何评论,期待你打破沉寂

关闭

推荐上一条 /2 下一条