A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区


public class CommonFriendsOne {
       
        public static class CommonFriendsOneMapper extends Mapper<LongWritable, Text, Text, Text>{
                Text k = new Text();
                Text v = new Text();
               
                //A:B,C,D,F,E,O
                // 输出: B->A  C->A  D->A ...
               
               
                @Override
                protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context)
                                throws IOException, InterruptedException {
                        String[] userAndFriends = value.toString().split(":");
                       
                        String user = userAndFriends[0];
                        String[] friends = userAndFriends[1].split(",");
                        v.set(user);
                        for (String f : friends) {
                                k.set(f);
                                context.write(k, v);
                        }
                       
                       
                }
               
               
               
        }
       
       
       
        public static class CommonFriendsOneReducer extends Reducer<Text, Text, Text, Text>{
               
                // 一组数据:  B -->  A  E  F  J .....
                // 一组数据:  C -->  B  F  E  J .....
                @Override
                protected void reduce(Text friend, Iterable<Text> users, Reducer<Text, Text, Text, Text>.Context context)
                                throws IOException, InterruptedException {
                       
                        ArrayList<String> userList = new ArrayList<>();
                       
                        for(Text user: users){
                                userList.add(user.toString());
                        }
                       
                        Collections.sort(userList);
                       
                        for(int i=0;i<userList.size()-1;i++){
                                for(int j=i+1;j<userList.size();j++){
                                        context.write(new Text(userList.get(i)+"-"+userList.get(j)), friend);
                                }
                        }
                       
                }
               
        }
       
       
public static void main(String[] args) throws Exception {

               
                Configuration conf = new Configuration();  
               
                Job job = Job.getInstance(conf);

                job.setJarByClass(CommonFriendsOne.class);

                job.setMapperClass(CommonFriendsOneMapper.class);
                job.setReducerClass(CommonFriendsOneReducer.class);
               
                job.setMapOutputKeyClass(Text.class);
                job.setMapOutputValueClass(Text.class);
               
                job.setOutputKeyClass(Text.class);
                job.setOutputValueClass(Text.class);

                FileInputFormat.setInputPaths(job, new Path("F:\\mrdata\\friends\\input"));
                FileOutputFormat.setOutputPath(job, new Path("F:\\mrdata\\friends\\out"));

                job.waitForCompletion(true);
        }
}

---------------------
【转载,仅作分享,侵删】
作者:高辉
原文:https://blog.csdn.net/ZJX103RLF/article/details/89075001
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
奈斯,感谢分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马