MapReduce之连接模式一:reduce端连接

3 篇文章 0 订阅
INPUT:表a:userID,user.location;表b:userID,coments.votes
OUTPUT:userID,user.location,coments.votes

joinMapper:
    public static class joinAMapper extends Mapper<Object,Text,Text,Text>{  
            private Text outKey = new Text();
            private Text outValue = new Text();
            public void map(Object key,Text value,Context context){
                    StringTokenizer itr = new StringTokenizer(value.toString());
                    while(itr.hasMoreTokens()){
                    String[] info  = itr.splite(",");
                    outKey.set(info[0]);
                    outValue.set("A"+info[1]);
                    context.write(outKey,outValue);
                    }

            }
    }

    public static class joinBMapper extends Mapper<Object,Text,Text,Text>{  
            private Text outKey = new Text();
            private Text outValue = new Text();
            public void map(Object key,Text value,Context context){
                    StringTokenizer itr = new StringTokenizer(value.toString());
                    while(itr.hasMoreTokens()){
                    String[] info  = itr.splite(",");
                    outKey.set(info[0]);
                    outValue.set("B"+info[1]);
                    context.write(outKey,outValue);
                    }

            }
    }

joinReducer:

    public static class joinReducer extends Reducer<Text,Text,Text,Text>{
            private Text tmp = new Text();
            private ArrayList<Text> listA = new ArrayList<Text>();
            private ArrayList<Text> listB = new ArrayList<Text>();
            public void reduce(Text text,Iterable<Text> values,Context context){
                while(values.hasNext()){
                    tmp = values.next();
                    if(tmp.charAt(0)=='A'){
                        listA.add(tmp.subString(1));
                    }else if(tmp.charAt(0)=='B'){
                        listB.add(tmp.subString(1));
                    }

                }


                execute.JoinLogic(context);
            }

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值