import java.io.IOException; import java.util.TreeSet; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.Reducer.Context; public class NellEdgeReducer extends Reducer< LongWritable, Text,LongWritable,Text> { @Override protected void reduce(LongWritable key, Iterable<Text> values , Context context) throws IOException, InterruptedException { TreeSet<String> tree = new TreeSet<String>(); for(Text v : values){ tree.add(v.toString()); } long i=0; long mykey=key.get(); mykey=Math.abs(mykey); long finalkey; for(String k: tree){ String[] ksplit=k.trim().split(":"); long srcid =Long.parseLong(ksplit[0]); long trgid =Long.parseLong(ksplit[1]); String relation=ksplit[2]; long keypart=mykey; long ipart=i%(1<<20); long timepart=(long) ((System.currentTimeMillis())% (1<<20)); finalkey= (ipart+keypart*(1<<20)+timepart*(1<<40)); finalkey=Math.abs(finalkey); String v=k+":"+finalkey; String value="edge ["+"\n"+"id "+finalkey+"\n"+"source "+srcid+"\ntarget "+trgid+"\nrelation \""+relation+"\""+"\n]"; context.write(null, new Text(value)); i++; } } }