package nyse.counters; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.mapreduce.TaskCounter; import org.apache.hadoop.mapreduce.Cluster; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.JobID; import org.apache.hadoop.mapreduce.Counters; import org.apache.hadoop.util.*; import nyse.topthreestocksbyvolume.TopThreeStocksByVolumePerDayReducer; public class NoTradeDays extends Configured implements Tool { @Override public int run(String[] args) throws Exception { String jobID = args[0]; Cluster cluster = new Cluster(getConf()); Job job = cluster.getJob(JobID.forName(jobID)); if (job == null) { System.err.printf("No job with ID %s found.\n", jobID); return -1; } if (!job.isComplete()) { System.err.printf("Job %s is not complete.\n", jobID); return -1; } Counters counters = job.getCounters(); long missing = counters.findCounter( TopThreeStocksByVolumePerDayReducer.NOTRADEDAYS.NOTRADE).getValue(); long total = counters.findCounter(TaskCounter.REDUCE_INPUT_GROUPS).getValue(); System.out.printf("Days on which no trade happened: %.2f%%\n", 100.0 * missing / total); return 0; } public static void main(String[] args) throws Exception { int exitCode = ToolRunner.run(new NoTradeDays(), args); System.exit(exitCode); } }