JobReport api
easy-batch 包含了一个在batch 处理阶段的metrics 以及batch完成之后的报告
- 包含的信息
job启动以及结束的时间
job的状态
读取的record
写入的record
过滤的record
错误数
自定义metrics
通过JobMetrics的addMetric我们可以添加自己的metrics,但是为了访问JobMetrics我们需要实现JobListener
接口
- 参考demo
public class RecordProcessingTimeCalculator implements PipelineListener, JobListener {
private long startTime;
private long nbRecords;
private long recordProcessingTimesSum;
@Override
public Record beforeRecordProcessing(Record record) {
nbRecords++;
startTime = System.currentTimeMillis();
return record;
}
@Override
public void afterRecordProcessing(Record input, Record output) {
recordProcessingTimesSum += System.currentTimeMillis() - startTime;
}
@Override
public void onRecordProcessingException(Record record, Throwable throwable) {
recordProcessingTimesSum += System.currentTimeMillis() - startTime;
}
@Override
public void afterJobEnd(JobReport jobReport) {
jobReport.getMetrics().addMetric(
"Record processing time average (in ms)",
(double)recordProcessingTimesSum / (double)nbRecords);
}
}
合并job的报告
很多时候我们是并行的运行job,但是需要获取之后的结果,那么可以使用合并报告的功能,代码上
我们可以通过JobReportMerger
来处理
参考图
- 提供的metrics
启动时间(基于最小并性能报告)
结束时间(基于最大并并行报告)
总读取record数(并行报告的总和)
总写入record数(并行写入报告的总和)
总过滤record数(并行报告过滤的总和)
总错误record数(并行报告过滤的总和)
最终的状态(COMPLETED,所有都完成,FAILED有一个失败了)
最后的名称为job名称的聚合
- 代码调用
JobReportMerger reportMerger = new DefaultJobReportMerger();
JobReport finalReport = reportMerger.mergeReports(report1, report2);