package io.lumify.assignimagemr;
import com.google.inject.Inject;
import io.lumify.core.exception.LumifyException;
import io.lumify.core.mapreduce.LumifyMRBase;
import io.lumify.core.security.LumifyVisibility;
import io.lumify.core.util.LumifyLogger;
import io.lumify.core.util.LumifyLoggerFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.util.ToolRunner;
import org.securegraph.Graph;
import org.securegraph.accumulo.AccumuloGraph;
import org.securegraph.accumulo.mapreduce.AccumuloElementOutputFormat;
import org.securegraph.accumulo.mapreduce.AccumuloVertexInputFormat;
public class AssignImageMR extends LumifyMRBase {
private static final LumifyLogger LOGGER = LumifyLoggerFactory.getLogger(AssignImageMR.class);
private AccumuloGraph graph;
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new AssignImageMR(), args);
System.exit(res);
}
@Override
protected void setupJob(Job job) throws Exception {
String[] authorizations = new String[]{
LumifyVisibility.SUPER_USER_VISIBILITY_STRING
};
AssignImageConfiguration assignImageConfiguration = new AssignImageConfiguration(job.getConfiguration());
if (assignImageConfiguration.getHasImageLabels().length == 0) {
throw new LumifyException("No " + AssignImageConfiguration.HAS_IMAGE_LABELS + " configured.");
}
job.getConfiguration().setBoolean("mapred.map.tasks.speculative.execution", false);
job.getConfiguration().setBoolean("mapred.reduce.tasks.speculative.execution", false);
job.setJarByClass(AssignImageMR.class);
job.setMapperClass(AssignImageMRMapper.class);
job.setOutputFormatClass(AccumuloElementOutputFormat.class);
job.setNumReduceTasks(0);
job.setInputFormatClass(AccumuloVertexInputFormat.class);
AccumuloVertexInputFormat.setInputInfo(job, graph, getInstanceName(), getZooKeepers(), getPrincipal(), getAuthorizationToken(), authorizations);
}
@Override
protected void parseArgs(JobConf conf, String[] args) {
}
@Override
protected String getJobName() {
return "lumifyAssignImage";
}
@Inject
public void setGraph(Graph graph) {
this.graph = (AccumuloGraph) graph;
}
}