[
https://issues.apache.org/jira/browse/HIVE-10697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14542504#comment-14542504
]
Hari Sankar Sivarama Subramaniyan commented on HIVE-10697:
----------------------------------------------------------
[~swarnim] You are right regarding the fact that ObjectinspectorConvertors are
supposed to be used to convert from one object to another given the two OIs and
not the OIs themselves. The below line needs to be modified to change
fieldConverters.get(f).convert(inputOI) to
fieldConverters.get(f).convert(input) :
{code}
@Override
public Object convert(Object input) {
.....
for (int f = 0; f < minFields; f++) {
Object outputFieldValue = fieldConverters.get(f).convert(inputOI);
....
}
{code}
Thanks
Hari
> ObjecInspectorConvertors#UnionConvertor does a faulty conversion
> ----------------------------------------------------------------
>
> Key: HIVE-10697
> URL: https://issues.apache.org/jira/browse/HIVE-10697
> Project: Hive
> Issue Type: Bug
> Components: Serializers/Deserializers
> Reporter: Swarnim Kulkarni
> Assignee: Swarnim Kulkarni
>
> Currently the UnionConvertor in the ObjectInspectorConvertors class has an
> issue with the convert method where it attempts to convert the
> objectinspector itself instead of converting the field.[1]. This should be
> changed to convert the field itself. This could result in a
> ClassCastException as shown below:
> {code}
> Caused by: java.lang.ClassCastException:
> org.apache.hadoop.hive.serde2.lazy.objectinspector.LazyUnionObjectInspector
> cannot be cast to org.apache.hadoop.hive.serde2.lazy.LazyString
> at
> org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyStringObjectInspector.getPrimitiveWritableObject(LazyStringObjectInspector.java:51)
> at
> org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorConverter$TextConverter.convert(PrimitiveObjectInspectorConverter.java:391)
> at
> org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorConverter$TextConverter.convert(PrimitiveObjectInspectorConverter.java:338)
> at
> org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters$UnionConverter.convert(ObjectInspectorConverters.java:456)
> at
> org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters$StructConverter.convert(ObjectInspectorConverters.java:395)
> at
> org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters$MapConverter.convert(ObjectInspectorConverters.java:539)
> at
> org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters$StructConverter.convert(ObjectInspectorConverters.java:395)
> at
> org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.readRow(MapOperator.java:154)
> at
> org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.access$200(MapOperator.java:127)
> at
> org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:518)
> ... 9 more
> {code}
> [1]
> https://github.com/apache/hive/blob/master/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java#L466
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)