[ 
https://issues.apache.org/jira/browse/KYLIN-3547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16610387#comment-16610387
 ] 

ASF GitHub Bot commented on KYLIN-3547:
---------------------------------------

shaofengshi closed pull request #226: KYLIN-3547 add boolean DataTypeOrder
URL: https://github.com/apache/kylin/pull/226
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java 
b/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java
index 2fe1667cd5..7580ad0202 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java
@@ -314,6 +314,10 @@ public boolean isDecimal() {
         return name.equals("decimal");
     }
 
+    public boolean isBoolean() {
+        return name.equals("boolean");
+    }
+
     public String getName() {
         return name;
     }
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataTypeOrder.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataTypeOrder.java
index 091e2ae7e1..44921786d0 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataTypeOrder.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataTypeOrder.java
@@ -36,6 +36,7 @@
     public static final DataTypeOrder DECIMAL_ORDER = new DecimalOrder();
     public static final DataTypeOrder DATETIME_ORDER = new DateTimeOrder();
     public static final DataTypeOrder STRING_ORDER = new StringOrder();
+    public static final DataTypeOrder BOOLEAN_ORDER = new BooleanOrder();
 
     // package private, access via DataType.getOrder()
     static DataTypeOrder getInstance(DataType type) throws 
IllegalArgumentException {
@@ -49,6 +50,8 @@ else if (type.isFloat() || type.isDouble())
             return DOUBLE_ORDER;
         else if (type.isDecimal())
             return DECIMAL_ORDER;
+        else if (type.isBoolean())
+            return BOOLEAN_ORDER;
         else
             throw new IllegalArgumentException("Unsupported data type " + 
type);
     }
@@ -151,5 +154,11 @@ public Long toComparable(String s) {
                 return DateFormat.stringToMillis(s);
         }
     }
-    
+
+    private static class BooleanOrder extends DataTypeOrder {
+        @Override
+        public String toComparable(String s) {
+            return s;
+        }
+    }
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> DimensionRangeInfo: Unsupported data type boolean
> -------------------------------------------------
>
>                 Key: KYLIN-3547
>                 URL: https://issues.apache.org/jira/browse/KYLIN-3547
>             Project: Kylin
>          Issue Type: Bug
>          Components: Job Engine, Metadata
>    Affects Versions: v2.5.0
>            Reporter: Yichen Zhou
>            Assignee: Yichen Zhou
>            Priority: Blocker
>             Fix For: v2.5.0
>
>
> In Extract Fact Table Distinct Columns Step, Kylin can not get dimension 
> range information from data of boolean type because DataType.getOrder() does 
> not support boolean.
> {quote}java.lang.RuntimeException: error execute 
> org.apache.kylin.engine.spark.SparkFactDistinct at 
> org.apache.kylin.common.util.AbstractApplication.execute(AbstractApplication.java:42)
>  at org.apache.kylin.common.util.SparkEntry.main(SparkEntry.java:44) at 
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498) at 
> org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:636)
>  Caused by: org.apache.spark.SparkException: Job aborted due to stage 
> failure: Task 5 in stage 1.0 failed 4 times, most recent failure: Lost task 
> 5.3 in stage 1.0 (TID 17, slave1.kcluster, executor 5): 
> java.lang.IllegalArgumentException: Unsupported data type boolean at 
> org.apache.kylin.metadata.datatype.DataTypeOrder.getInstance(DataTypeOrder.java:53)
>  at org.apache.kylin.metadata.datatype.DataType.getOrder(DataType.java:230) 
> at org.apache.kylin.metadata.datatype.DataType.compare(DataType.java:236) at 
> org.apache.kylin.engine.spark.SparkFactDistinct$MultiOutputFunction.call(SparkFactDistinct.java:739)
>  at 
> org.apache.kylin.engine.spark.SparkFactDistinct$MultiOutputFunction.call(SparkFactDistinct.java:612)
>  at 
> org.apache.spark.api.java.JavaRDDLike$$anonfun$fn$7$1.apply(JavaRDDLike.scala:186)
>  at 
> org.apache.spark.api.java.JavaRDDLike$$anonfun$fn$7$1.apply(JavaRDDLike.scala:186)
>  at 
> org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(RDD.scala:797)
>  at 
> org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(RDD.scala:797)
>  at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 
> at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323) at 
> org.apache.spark.rdd.RDD.iterator(RDD.scala:287) at 
> org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) at 
> org.apache.spark.scheduler.Task.run(Task.scala:99) at 
> org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:325) at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
> {quote}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to