From fe08a5cb66afb76046c8643c23cbd7dd746d2fd4 Mon Sep 17 00:00:00 2001 From: yangzhong Date: Thu, 18 Feb 2016 09:44:18 +0800 Subject: [PATCH] KYLIN-1426: fix the bug: fail to locate kylin.properties during cardinality calculation --- .../src/main/java/org/apache/kylin/rest/service/CubeService.java | 7 ++++--- .../kylin/source/hive/cardinality/HiveColumnCardinalityJob.java | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/apache/kylin/rest/service/CubeService.java b/server/src/main/java/org/apache/kylin/rest/service/CubeService.java index 3f894ec..b543ef7 100644 --- a/server/src/main/java/org/apache/kylin/rest/service/CubeService.java +++ b/server/src/main/java/org/apache/kylin/rest/service/CubeService.java @@ -41,6 +41,7 @@ import org.apache.kylin.engine.EngineFactory; import org.apache.kylin.engine.mr.CubingJob; import org.apache.kylin.engine.mr.HadoopUtil; import org.apache.kylin.engine.mr.common.HadoopShellExecutable; +import org.apache.kylin.engine.mr.common.MapReduceExecutable; import org.apache.kylin.job.exception.JobException; import org.apache.kylin.job.execution.DefaultChainedExecutable; import org.apache.kylin.job.execution.ExecutableState; @@ -499,10 +500,10 @@ public class CubeService extends BasicService { String outPath = HiveColumnCardinalityJob.OUTPUT_PATH + "/" + tableName; String param = "-table " + tableName + " -output " + outPath; - HadoopShellExecutable step1 = new HadoopShellExecutable(); + MapReduceExecutable step1 = new MapReduceExecutable(); - step1.setJobClass(HiveColumnCardinalityJob.class); - step1.setJobParams(param); + step1.setMapReduceJobClass(HiveColumnCardinalityJob.class); + step1.setMapReduceParams(param); job.addTask(step1); diff --git a/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityJob.java b/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityJob.java index 2b35755..2b12273 100644 --- a/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityJob.java +++ b/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityJob.java @@ -29,10 +29,13 @@ import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.kylin.common.KylinConfig; import org.apache.kylin.engine.mr.IMRInput.IMRTableInputFormat; import org.apache.kylin.engine.mr.MRUtil; import org.apache.kylin.engine.mr.common.AbstractHadoopJob; import org.apache.kylin.engine.mr.common.BatchConstants; +import org.apache.kylin.metadata.MetadataManager; +import org.apache.kylin.metadata.model.TableDesc; /** * This hadoop job will scan all rows of the hive table and then calculate the cardinality on each column. @@ -94,6 +97,9 @@ public class HiveColumnCardinalityJob extends AbstractHadoopJob { this.deletePath(job.getConfiguration(), output); logger.info("Going to submit HiveColumnCardinalityJob for table '" + table + "'"); + + TableDesc tableDesc = MetadataManager.getInstance(KylinConfig.getInstanceFromEnv()).getTableDesc(table); + attachKylinPropsAndMetadata(tableDesc, job.getConfiguration()); int result = waitForCompletion(job); return result; -- 2.5.4 (Apple Git-61)