package org.openstack.atlas.logs.hadoop.counters;
import java.io.IOException;
import org.apache.hadoop.mapreduce.Counters;
import org.apache.hadoop.mapreduce.Job;
import org.openstack.atlas.util.staticutils.StaticStringUtils;
public class CounterUtils {
public static String showCounters(Job job, Enum[] counters) throws IOException {
StringBuilder sb = new StringBuilder();
int maxNameLen = getMaxCounterNameLength(counters);
Counters jobCounters = job.getCounters();
for (int i = 0; i < counters.length; i++) {
Enum counterKey = counters[i];
String counterName = StaticStringUtils.lpad(counterKey.name(), " ", maxNameLen);
long val = jobCounters.findCounter(counterKey).getValue();
String valStr = StaticStringUtils.lpadLong(val, " ", 20);
sb.append(counterName).append(":").append(valStr).append("\n");
}
return sb.toString();
}
private static int getMaxCounterNameLength(Enum[] counters) {
int maxVal = 0;
for (int i = 0; i < counters.length; i++) {
int curVal = counters[i].name().length();
if (maxVal < curVal) {
maxVal = curVal;
}
}
return maxVal;
}
}