Repository: kylin Updated Branches: refs/heads/2.0-rc 012ff286c -> 543ef7e06
KYLIN-1402 StringIndexOutOfBoundsException in Kylin Hive Column Cardinality Job Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/543ef7e0 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/543ef7e0 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/543ef7e0 Branch: refs/heads/2.0-rc Commit: 543ef7e068fba8de2c3f3e35b658954ef25c7688 Parents: 012ff28 Author: shaofengshi <[email protected]> Authored: Fri Feb 5 16:40:07 2016 +0800 Committer: shaofengshi <[email protected]> Committed: Fri Feb 5 16:42:24 2016 +0800 ---------------------------------------------------------------------- .../HiveColumnCardinalityUpdateJob.java | 36 ++++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/543ef7e0/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityUpdateJob.java ---------------------------------------------------------------------- diff --git a/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityUpdateJob.java b/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityUpdateJob.java index d088bfa..9a4d8de 100644 --- a/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityUpdateJob.java +++ b/source-hive/src/main/java/org/apache/kylin/source/hive/cardinality/HiveColumnCardinalityUpdateJob.java @@ -18,14 +18,6 @@ package org.apache.kylin.source.hive.cardinality; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; @@ -41,11 +33,21 @@ import org.apache.kylin.common.KylinConfig; import org.apache.kylin.engine.mr.common.AbstractHadoopJob; import org.apache.kylin.metadata.MetadataConstants; import org.apache.kylin.metadata.MetadataManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; /** * This job will update save the cardinality result into Kylin table metadata store. - * @author shaoshi * + * @author shaoshi */ public class HiveColumnCardinalityUpdateJob extends AbstractHadoopJob { public static final String JOB_TITLE = "Kylin Hive Column Cardinality Update Job"; @@ -55,6 +57,8 @@ public class HiveColumnCardinalityUpdateJob extends AbstractHadoopJob { private String table; + private static final Logger logger = LoggerFactory.getLogger(HiveColumnCardinalityUpdateJob.class); + public HiveColumnCardinalityUpdateJob() { } @@ -110,11 +114,15 @@ public class HiveColumnCardinalityUpdateJob extends AbstractHadoopJob { cardi.append(","); } String scardi = cardi.toString(); - scardi = scardi.substring(0, scardi.length() - 1); - MetadataManager metaMgr = MetadataManager.getInstance(KylinConfig.getInstanceFromEnv()); - Map<String, String> tableExd = metaMgr.getTableDescExd(tableName); - tableExd.put(MetadataConstants.TABLE_EXD_CARDINALITY, scardi); - metaMgr.saveTableExd(tableName.toUpperCase(), tableExd); + if (scardi.length() > 0) { + scardi = scardi.substring(0, scardi.length() - 1); + MetadataManager metaMgr = MetadataManager.getInstance(KylinConfig.getInstanceFromEnv()); + Map<String, String> tableExd = metaMgr.getTableDescExd(tableName); + tableExd.put(MetadataConstants.TABLE_EXD_CARDINALITY, scardi); + metaMgr.saveTableExd(tableName.toUpperCase(), tableExd); + } else { + throw new IllegalArgumentException("No cardinality data is collected for table " + tableName); + } } private static List<String> readLines(Path location, Configuration conf) throws Exception {
