Repository: kylin Updated Branches: refs/heads/2.x-staging 5b636df32 -> b180e2ec6
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/b180e2ec Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/b180e2ec Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/b180e2ec Branch: refs/heads/2.x-staging Commit: b180e2ec69b3f44c28ce709995acf04f65027243 Parents: 5b636df Author: shaofengshi <[email protected]> Authored: Fri Feb 5 16:40:07 2016 +0800 Committer: shaofengshi <[email protected]> Committed: Fri Feb 5 16:40:07 2016 +0800 ---------------------------------------------------------------------- .../HiveColumnCardinalityUpdateJob.java | 36 ++++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/b180e2ec/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 {
