From 64f5bf74b8789407eceebe8c6c305d045d657c22 Mon Sep 17 00:00:00 2001 From: Zhiwei Tian Date: Mon, 26 Mar 2018 15:14:35 +0800 Subject: [PATCH] KYLIN-3316 modify CubingJob.updateMetrics() --- .../java/org/apache/kylin/engine/mr/CubingJob.java | 28 +++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/kylin/engine-mr/src/main/java/org/apache/kylin/engine/mr/CubingJob.java b/kylin/engine-mr/src/main/java/org/apache/kylin/engine/mr/CubingJob.java index 6f26c3546..c56d4d4ce 100644 --- a/kylin/engine-mr/src/main/java/org/apache/kylin/engine/mr/CubingJob.java +++ b/kylin/engine-mr/src/main/java/org/apache/kylin/engine/mr/CubingJob.java @@ -267,19 +267,31 @@ public class CubingJob extends DefaultChainedExecutable { protected void updateMetrics(ExecutableContext context, ExecuteResult result, ExecutableState state) { JobMetricsFacade.JobStatisticsResult jobStats = new JobMetricsFacade.JobStatisticsResult(); - jobStats.setWrapper(getSubmitter(), getProjectName(), - CubingExecutableUtil.getCubeName(getParams()), getId(), getJobType(), - getAlgorithm() == null ? "NULL" : getAlgorithm().toString()); + jobStats.setWrapper(getSubmitter(), getProjectName(), CubingExecutableUtil.getCubeName(getParams()), getId(), + getJobType(), getAlgorithm() == null ? "NULL" : getAlgorithm().toString()); if (state == ExecutableState.SUCCEED) { jobStats.setJobStats(findSourceSizeBytes(), findCubeSizeBytes(), getDuration(), getMapReduceWaitTime(), getPerBytesTimeCost(findSourceSizeBytes(), getDuration())); if (CubingJobTypeEnum.getByName(getJobType()) == CubingJobTypeEnum.BUILD) { - jobStats.setJobStepStats( - getTaskByName(ExecutableConstants.STEP_NAME_FACT_DISTINCT_COLUMNS).getDuration(), - getTaskByName(ExecutableConstants.STEP_NAME_BUILD_DICTIONARY).getDuration(), - getTaskByName(ExecutableConstants.STEP_NAME_BUILD_IN_MEM_CUBE).getDuration(), - getTaskByName(ExecutableConstants.STEP_NAME_CONVERT_CUBOID_TO_HFILE).getDuration()); + + long dColumnDistinct = 0L; + long dDictBuilding = 0L; + long dCubingInmem = 0L; + long dHfileConvert = 0L; + if (getTaskByName(ExecutableConstants.STEP_NAME_FACT_DISTINCT_COLUMNS) != null) { + dColumnDistinct = getTaskByName(ExecutableConstants.STEP_NAME_FACT_DISTINCT_COLUMNS).getDuration(); + } + if (getTaskByName(ExecutableConstants.STEP_NAME_BUILD_DICTIONARY) != null) { + dDictBuilding = getTaskByName(ExecutableConstants.STEP_NAME_BUILD_DICTIONARY).getDuration(); + } + if (getTaskByName(ExecutableConstants.STEP_NAME_BUILD_IN_MEM_CUBE) != null) { + dCubingInmem = getTaskByName(ExecutableConstants.STEP_NAME_BUILD_IN_MEM_CUBE).getDuration(); + } + if (getTaskByName(ExecutableConstants.STEP_NAME_CONVERT_CUBOID_TO_HFILE) != null) { + dHfileConvert = getTaskByName(ExecutableConstants.STEP_NAME_CONVERT_CUBOID_TO_HFILE).getDuration(); + } + jobStats.setJobStepStats(dColumnDistinct, dDictBuilding, dCubingInmem, dHfileConvert); } } else if (state == ExecutableState.ERROR) { jobStats.setJobException(result.getThrowable() != null ? result.getThrowable() : new Exception()); -- 2.16.2.windows.1