package com.ontology2.bakemono.diffFacts; import com.google.common.collect.Sets; import com.ontology2.bakemono.joins.TaggedItem; import org.apache.hadoop.io.Text; import org.apache.hadoop.io.VIntWritable; import org.apache.hadoop.io.WritableComparable; import org.apache.hadoop.mapreduce.Reducer; import org.apache.log4j.Logger; import java.io.IOException; import java.util.Set; public class DiffFactReducer<KeyType extends WritableComparable> extends Reducer<TaggedItem<KeyType>,VIntWritable,Text,KeyType> { final static Logger log= Logger.getLogger(DiffFactReducer.class); final static VIntWritable ONE=new VIntWritable(1); final static VIntWritable TWO=new VIntWritable(2); final static Text A=new Text("A"); final static Text D=new Text("D"); @Override protected void reduce(TaggedItem<KeyType> key, Iterable<VIntWritable> values, Context context) throws IOException, InterruptedException { Set<Integer> that= Sets.newHashSet(); for(VIntWritable tag:values) { that.add(tag.get()); } if(that.contains(1) & !that.contains(2)) { context.write(D,key.getKey()); } if(!that.contains(1) & that.contains(2)) { context.write(A,key.getKey()); } } }