You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2017/09/29 21:01:48 UTC

[07/17] hive git commit: HIVE-17653 : Druid storage handler CTAS with boolean type columns fails. (Slim Bouguerra via Ashutosh Chauhan)

HIVE-17653 : Druid storage handler CTAS with boolean type columns fails. (Slim Bouguerra via Ashutosh Chauhan)

Signed-off-by: Ashutosh Chauhan <ha...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0f7ce71e
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0f7ce71e
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0f7ce71e

Branch: refs/heads/hive-14535
Commit: 0f7ce71e561fe2ad0579c3d175415af58e5d5672
Parents: 67610b1
Author: Slim Bouguerra <sl...@gmail.com>
Authored: Fri Sep 29 12:48:05 2017 -0700
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Fri Sep 29 12:48:05 2017 -0700

----------------------------------------------------------------------
 .../hadoop/hive/druid/io/DruidOutputFormat.java      | 15 +++++++++------
 .../apache/hadoop/hive/druid/serde/DruidSerDe.java   |  9 +++++++++
 2 files changed, 18 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/0f7ce71e/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java
----------------------------------------------------------------------
diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java
index 8156231..da7642c 100644
--- a/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java
+++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java
@@ -51,6 +51,7 @@ import org.apache.hadoop.hive.druid.serde.DruidWritable;
 import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
 import org.apache.hadoop.hive.ql.io.HiveOutputFormat;
 import org.apache.hadoop.hive.serde.serdeConstants;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils.PrimitiveGrouping;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
@@ -127,9 +128,10 @@ public class DruidOutputFormat<K, V> implements HiveOutputFormat<K, DruidWritabl
     final List<DimensionSchema> dimensions = new ArrayList<>();
     ImmutableList.Builder<AggregatorFactory> aggregatorFactoryBuilder = ImmutableList.builder();
     for (int i = 0; i < columnTypes.size(); i++) {
-      PrimitiveTypeInfo f = (PrimitiveTypeInfo) columnTypes.get(i);
+      final PrimitiveObjectInspector.PrimitiveCategory primitiveCategory = ((PrimitiveTypeInfo) columnTypes
+              .get(i)).getPrimitiveCategory();
       AggregatorFactory af;
-      switch (f.getPrimitiveCategory()) {
+      switch (primitiveCategory) {
         case BYTE:
         case SHORT:
         case INT:
@@ -146,16 +148,17 @@ public class DruidOutputFormat<K, V> implements HiveOutputFormat<K, DruidWritabl
           if (!tColumnName.equals(DruidStorageHandlerUtils.DEFAULT_TIMESTAMP_COLUMN) && !tColumnName
                   .equals(Constants.DRUID_TIMESTAMP_GRANULARITY_COL_NAME)) {
             throw new IOException("Dimension " + tColumnName + " does not have STRING type: " +
-                    f.getPrimitiveCategory());
+                    primitiveCategory);
           }
           continue;
         default:
           // Dimension
           String dColumnName = columnNames.get(i);
-          if (PrimitiveObjectInspectorUtils.getPrimitiveGrouping(f.getPrimitiveCategory()) !=
-                  PrimitiveGrouping.STRING_GROUP) {
+          if (PrimitiveObjectInspectorUtils.getPrimitiveGrouping(primitiveCategory) !=
+                  PrimitiveGrouping.STRING_GROUP
+                  && primitiveCategory != PrimitiveObjectInspector.PrimitiveCategory.BOOLEAN) {
             throw new IOException("Dimension " + dColumnName + " does not have STRING type: " +
-                    f.getPrimitiveCategory());
+                    primitiveCategory);
           }
           dimensions.add(new StringDimensionSchema(dColumnName));
           continue;

http://git-wip-us.apache.org/repos/asf/hive/blob/0f7ce71e/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java
----------------------------------------------------------------------
diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java
index e6e01d1..a43f62e 100644
--- a/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java
+++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java
@@ -52,6 +52,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
 import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.FloatObjectInspector;
@@ -68,6 +69,7 @@ import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
 import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
+import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.LongWritable;
@@ -494,6 +496,10 @@ public class DruidSerDe extends AbstractSerDe {
           res = ((StringObjectInspector) fields.get(i).getFieldObjectInspector())
                   .getPrimitiveJavaObject(values.get(i));
           break;
+        case BOOLEAN:
+          res = ((BooleanObjectInspector) fields.get(i).getFieldObjectInspector())
+                  .get(values.get(i));
+          break;
         default:
           throw new SerDeException("Unknown type: " + types[i].getPrimitiveCategory());
       }
@@ -564,6 +570,9 @@ public class DruidSerDe extends AbstractSerDe {
         case STRING:
           output.add(new Text(value.toString()));
           break;
+        case BOOLEAN:
+          output.add(new BooleanWritable(Boolean.valueOf(value.toString())));
+          break;
         default:
           throw new SerDeException("Unknown type: " + types[i].getPrimitiveCategory());
       }