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 {

Reply via email to