JobConf jobconf = null;
String jobID = null;
String taskID = null;
String attemptID = null;
ChukwaRecordKey newkey = null;
while (values.hasNext()) {
newkey = null;
record = values.next();
String keyValue = key.getKey();
log.debug("key:"+ keyValue);
int index = -1;
if((index = keyValue.indexOf("Job/"))!= -1){
jobID = keyValue.substring(keyValue.indexOf("/")+1);
if(jobconf==null){
jobconf=new JobConf(jobID.substring(4));
}
jobconf.update(record.getTime()/1000);
newkey = new ChukwaRecordKey();
newkey.setReduceType("HiTune.JobHistoryLog" + "/" + jobID + "/" + "Job");
}
else if((index = keyValue.indexOf("MapTask/"))!= -1){
taskID = keyValue.substring(keyValue.indexOf("/")+1);
matcher = p.matcher(taskID);
if (matcher.find()) {
jobID = "job_" + matcher.group(1).trim();
// if(jobconf==null){
// jobconf=new JobConf(jobID.substring(4));
// }
// jobconf.update(record.getTime()/1000);
newkey = new ChukwaRecordKey();
newkey.setReduceType("HiTune.JobHistoryLog" + "/" + jobID + "/" + "MapTask");
}
}
else if((index = keyValue.indexOf("ReduceTask/"))!= -1){
taskID = keyValue.substring(keyValue.indexOf("/")+1);
matcher = p.matcher(taskID);
if (matcher.find()) {
jobID = "job_" + matcher.group(1).trim();
// if(jobconf==null){
// jobconf=new JobConf(jobID.substring(4));
// }
// jobconf.update(record.getTime()/1000);
newkey = new ChukwaRecordKey();
newkey.setReduceType("HiTune.JobHistoryLog" + "/" + jobID + "/" + "ReduceTask");
}
}
else if((index = keyValue.indexOf("MapAttempt/"))!= -1){
attemptID = keyValue.substring(keyValue.indexOf("/")+1);
matcher = p.matcher(attemptID);
if (matcher.find()) {
jobID = "job_" + matcher.group(1).trim();
// if(jobconf==null){
// jobconf=new JobConf(jobID.substring(4));
// }
// jobconf.update(record.getTime()/1000);
newkey = new ChukwaRecordKey();
newkey.setReduceType("HiTune.JobHistoryLog" + "/" + jobID + "/" + "MapAttempt");
}
}
else if((index = keyValue.indexOf("ReduceAttempt/"))!= -1){
attemptID = keyValue.substring(keyValue.indexOf("/")+1);
matcher = p.matcher(attemptID);
if (matcher.find()) {
jobID = "job_" + matcher.group(1).trim();
// if(jobconf==null){
// jobconf=new JobConf(jobID.substring(4));
// }
// jobconf.update(record.getTime()/1000);
newkey = new ChukwaRecordKey();
newkey.setReduceType("HiTune.JobHistoryLog" + "/" + jobID + "/" + "ReduceAttempt");
}
}
if(newkey!=null && record!=null){
newkey.setKey(keyValue + "/" + record.getTime());
log.debug("newkey:" + newkey.getKey());
log.debug("newkeyType:" + newkey.getReduceType());
try {
log.debug("emit key: "+ newkey.toString() + " record: " + record.toString());
output.collect(newkey,record);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}