package com.telenav.logshed.collector.muxdemux;
import org.apache.avro.Schema;
import org.apache.avro.mapred.AvroInputFormat;
import org.apache.avro.mapred.AvroJob;
import org.apache.avro.mapred.AvroKey;
import org.apache.avro.mapred.AvroKeyComparator;
import org.apache.avro.mapred.AvroOutputFormat;
import org.apache.avro.mapred.AvroSerialization;
import org.apache.avro.mapred.AvroTextOutputFormat;
import org.apache.avro.mapred.AvroWrapper;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import com.telenav.logshed.collector.utils.LogshedCollectorUtils;
@SuppressWarnings("deprecation")
public class MuxDemuxJob extends Configured implements Tool
{
public static final Schema IN_SCHEMA = LogshedCollectorUtils.getResourceSchema();
public static final Schema OUT_SCHEMA = LogshedCollectorUtils.getResourceSchema();
@Override
public int run(String[] args) throws Exception
{
JobConf jobConf = new JobConf(LogshedCollectorUtils.getLocalHadoopConfiguartion());
Job job = new Job(jobConf, "muxdemux_job");
FileInputFormat.setInputPaths(job, new Path(args[0]));
Path outPath = new Path(args[1]);
FileOutputFormat.setOutputPath(job, outPath);
job.setJarByClass(MuxDemuxJob.class);
AvroJob.setInputSchema(jobConf, IN_SCHEMA);
AvroJob.setOutputSchema(jobConf, OUT_SCHEMA);
AvroJob.setMapperClass(jobConf, LogshedMapper.class);
AvroJob.setReducerClass(jobConf, LogshedReducer.class);
return job.waitForCompletion(true) ? 0 : 1;
}
}