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++;
}
}
}