Hi,
I wrote a custom serde for Hive in order to manage the column composite types in my application.
Some fields in the composite are binary types.
All works, but when I perform queries with a WHERE clause like SELECT * FROM MyTable WHERE col1.a = XXX; where col1.a is a binary field, I get the following error:
2012-11-12 15:14:38,008 FATAL ExecMapper: org.apache.hadoop.hive.ql.metadata.
HiveException: Hive Runtime Error while processing row {...
...
Caused by: java.lang.RuntimeException: Hive 2 Internal error: unknown type: binary
at org.apache.hadoop.hive.serde2.objectinspector.primitive.
PrimitiveObjectInspectorUtils.getDouble(PrimitiveObjectInspectorUtils.java:651)
at org.apache.hadoop.hive.serde2.objectinspector.primitive.
PrimitiveObjectInspectorConverter$DoubleConverter.convert
(PrimitiveObjectInspectorConverter.java:232)
at org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual.evaluate
(GenericUDFOPEqual.java:73)
at org.apache.hadoop.hive.ql.exec.ExprNodeGenericFuncEvaluator.evaluate
(ExprNodeGenericFuncEvaluator.java:163)
at org.apache.hadoop.hive.ql.exec.FilterOperator.processOp
(FilterOperator.java:118)
at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)
at org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp
(TableScanOperator.java:83)
at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:531)
... 9 more
The method org.apache.hadoop.hive.serde2.objectinspector.primitive.
PrimitiveObjectInspectorUtils.getDouble indeed does not support binary types, but I don't understand how to solve the problem.
Can someone help me?
Thank you in advance
