共同好友统计------->删除单边好友
统计共同好友(上)
统计共同好友(中)
统计共同好友(下)
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
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.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
import java.io.IOException;
public class DeleteSimple extends Configured implements Tool {
static class DeleteMap extends
Mapper<LongWritable, Text, Text,LongWritable>{
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String[]str=value.toString().split(":");
String[]fr=str[1].split(",");
for (String s:fr){
Text vstr;
if(str[0].compareTo(s)>0){
vstr= new Text(s+","+str[0]);
}else{
vstr= new Text(str[0]+","+s);
}
context.write(vstr,new LongWritable(1));
}
}
}
static class DeleteReduce extends
Reducer<Text,LongWritable,Text,Text>{
@Override
protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {
int sum=0;
for (LongWritable lw: values) {
sum+=lw.get();
if(sum==2){
String[]str=key.toString().split(",");
context.write(new Text(str[0]),new Text(str[1]));
}
}
}
}
@Override
public int run(String[] strings) throws Exception {
Configuration conf=getConf();
String input=conf.get("input");
String output=conf.get("output");
Job job= Job.getInstance();
job.setJarByClass(this.getClass());
job.setJobName("Delete_hlm");
job.setMapperClass(DeleteMap.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(LongWritable.class);
job.setNumReduceTasks(1);
job.setReducerClass(DeleteReduce.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
TextInputFormat.addInputPath(job, new Path(input));
TextOutputFormat.setOutputPath(job,new Path(output));
return job.waitForCompletion(true)?0:-1;
}
public static void main(String[] args) throws Exception {
System.exit(
new ToolRunner().run(
new DeleteSimple(),args
)
);
}
}