MR-找朋友

来源:互联网 发布:中国历史多少年知乎 编辑:程序博客网 时间:2024/05/16 05:44
A B C D E F
B A C D E
C A B E
D A B E
E A B C D
F A
每一行第一个代表本人,后面的是他的朋友,找出有共同朋友的人以及是谁。
下面是我的源代码,仅供参考。

package findfriends;import java.io.IOException;import java.util.Set;import java.util.TreeSet;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class FindFriends {           public static class FindMap extends Mapper<Object,Text,Text,Text>{           public void map(Object key,Text value,Context context)throws IOException , InterruptedException{           Set<String> set = new TreeSet<String>();           String[] str = new String[value.toString().split(" ").length];           str=value.toString().split(" ");           for(int i=0;i<str.length;i++){           set.add(str[i]);           }           String[] friends = new String[set.size()];           friends = set.toArray(friends);           for(int i=0;i<friends.length;i++)           for(int j=i+1;j<friends.length;j++){           String friend = friends[i]+friends[j];           context.write(new Text(friend), new Text(str[0]));            }           }           }           public static class FindReduce extends Reducer<Text,Text,Text,Text>{           public void reduce(Text key,Iterable<Text> values,Context context)throws IOException,InterruptedException{           String value = "";           for(Text val:values){           if(value==""){           value=val.toString();           }           else{           value=value+":"+val.toString();           }           }           context.write(key, new Text(value));           }           }           public static void main(String[] args)throws IOException, ClassNotFoundException, InterruptedException{           Configuration conf = new Configuration();           Job job = new Job(conf,"findfriends");           job.setJarByClass(FindFriends.class);           job.setMapperClass(FindMap.class);           job.setReducerClass(FindReduce.class);           job.setOutputKeyClass(Text.class);           job.setOutputValueClass(Text.class);           job.setNumReduceTasks(1);           FileInputFormat.addInputPath(job, new Path(args[0]));           FileOutputFormat.setOutputPath(job, new Path(args[1]));           System.exit(job.waitForCompletion(true)?0:1);           }}

0 0