package edu.isi.karma.mapreduce.driver; import edu.isi.karma.rdf.BaseRDFImpl; import org.apache.hadoop.io.Text; import org.apache.hadoop.io.Writable; import org.apache.hadoop.mapreduce.Mapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.Map; import java.util.Properties; public abstract class BaseRDFMapper extends Mapper<Writable, Text, Text, Text> { private static Logger LOG = LoggerFactory.getLogger(BaseRDFMapper.class); protected BaseRDFImpl process; @Override public void setup(Context context) throws IOException { Properties properties = new Properties(); for (Map.Entry<String, String> entry : context.getConfiguration()) { properties.setProperty(entry.getKey(), entry.getValue()); } process.setup(properties); } @Override public void map(Writable key, Text value, Context context) throws IOException, InterruptedException { String results = process.mapResult(key.toString(), value.toString()); if (results != null && !results.equals("[\n\n]\n")) { writeRDFToContext(context, results); } else { LOG.info("RDF is empty! "); } } protected abstract void writeRDFToContext(Context context, String results) throws IOException, InterruptedException; }