package com.taobao.top.analysis.node.monitor;
import com.taobao.top.analysis.node.job.JobTaskExecuteInfo;
/**
* JobTask执行统计日志
* @author sihai
*
*/
public class JobTaskExecutionLog extends MonitorLog {
/**
* 标题常量
*/
public static final String TITLE_JOB_NAME = "实例名称";
public static final String TITLE_TASK_ID = "任务标识";
public static final String TITLE_TASK_CONSUME_TIME = "任务执行耗时";
public static final String TITLE_TASK_DATA_SIZE = "任务数据量";
public static final String TITLE_TASK_TOTAL_LINE = "任务数据行数";
public static final String TITLE_TASK_ERROR_LINE = "任务错误数据行数";
public static final String TITLE_TASK_EMPTY_LINE = "任务空数据行数";
public static final String TITLE_TASK_KEY_COUNT = "任务产生Key数";
public static final String TITLE_TASK_VALUE_COUNT = "任务产生Value数";
public static final String TITLE_TASK_SUCCEED = "任务执行是否成功";
private String jobName; // 被执行的jobName
private String taskId; // 被执行的任务id
private long analysisConsume; // 任务数据分析执行消耗时间, 单位毫秒
private long jobDataSize; // 任务分析的数据大小, 单位byte
private long totalLine; // 任务数据行数
private long errorLine; // 任务错误数据行数
private long emptyLine; // 任务空数据行数
private long keyCount; // 任务map key 数量
private long valueCount; // 任务map value 数量
private boolean success; // 任务是否执行成功
private long fileBegin; //
private long fileLength; //
/**
* 构造函数
* @param jobTask
* @param jobTaskExecuteInfo
*/
public JobTaskExecutionLog(String jobName, JobTaskExecuteInfo jobTaskExecuteInfo) {
this.jobName = jobName;
this.taskId = jobTaskExecuteInfo.getTaskId();
this.analysisConsume = jobTaskExecuteInfo.getAnalysisConsume();
this.jobDataSize = jobTaskExecuteInfo.getJobDataSize();
this.totalLine = jobTaskExecuteInfo.getTotalLine();
this.errorLine = jobTaskExecuteInfo.getErrorLine();
this.emptyLine = jobTaskExecuteInfo.getEmptyLine();
this.keyCount = jobTaskExecuteInfo.getKeyCount();
this.valueCount = jobTaskExecuteInfo.getValueCount();
this.success = jobTaskExecuteInfo.isSuccess();
this.fileBegin = jobTaskExecuteInfo.getFileBegin();
this.fileLength = jobTaskExecuteInfo.getFileLength();
}
public static String title() {
StringBuilder sb = new StringBuilder(TITLE_JOB_NAME);
sb.append(",");
sb.append(TITLE_TASK_ID);
sb.append(",");
sb.append(TITLE_TASK_CONSUME_TIME);
sb.append(",");
sb.append(TITLE_TASK_DATA_SIZE);
sb.append(",");
sb.append(TITLE_TASK_TOTAL_LINE);
sb.append(",");
sb.append(TITLE_TASK_ERROR_LINE);
sb.append(",");
sb.append(TITLE_TASK_EMPTY_LINE);
sb.append(",");
sb.append(TITLE_TASK_KEY_COUNT);
sb.append(",");
sb.append(TITLE_TASK_VALUE_COUNT);
sb.append(",");
sb.append(TITLE_TASK_SUCCEED);
return sb.toString();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(jobName);
sb.append(",");
sb.append(taskId);
sb.append(",");
sb.append(analysisConsume);
sb.append(",");
sb.append(jobDataSize);
sb.append(",");
sb.append(totalLine);
sb.append(",");
sb.append(errorLine);
sb.append(",");
sb.append(emptyLine);
sb.append(",");
sb.append(keyCount);
sb.append(",");
sb.append(valueCount);
sb.append(",");
sb.append(success);
return sb.toString();
}
public String getJobName() {
return jobName;
}
public String getTaskId() {
return taskId;
}
public long getAnalysisConsume() {
return analysisConsume;
}
public long getJobDataSize() {
return jobDataSize;
}
public long getTotalLine() {
return totalLine;
}
public long getErrorLine() {
return errorLine;
}
public long getEmptyLine() {
return emptyLine;
}
public long getKeyCount() {
return keyCount;
}
public long getValueCount() {
return valueCount;
}
public boolean isSuccess() {
return success;
}
public long getFileBegin() {
return fileBegin;
}
public long getFileLength() {
return fileLength;
}
}