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());
}