[
https://issues.apache.org/jira/browse/HIVE-4734?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14618187#comment-14618187
]
Ratandeep Ratti commented on HIVE-4734:
---
I found some minor issues with the patch. Adding notes below.
In class AvroObjectInspectorGenerator.java, while constructing an
{{AvroMapObjectInspector}} we are using a {{JavaStringObjectInspector}}
{code}
case MAP:
MapTypeInfo mti = (MapTypeInfo)ti;
result = new AvroMapObjectInspector(
PrimitiveObjectInspectorFactory
.getPrimitiveJavaObjectInspector(PrimitiveObjectInspector.PrimitiveCategory.STRING),
createObjectInspectorWorker(mti.getMapValueTypeInfo(),
subSchema.getValueType()));
break;
{code}
Whereas Avro string could be of type UTF8 or java.lang.String . Default being
UTF8.
Also, {{AvroStringObjectInspector}} assumes that avro strings are always
{{Utf8}} which may not be the case. Avro strings can either be UFT-8 or String
type.
{{AvroMapObjectInspector}} also assumes that Map keys will always be {{String}}
s. Further the below methods in MapObjectInspector assume the second argument
('key') passed to them is of type {{String}} whereas it could be either
{{utf8}} or {{String}}
{code}
@Override
public Object getMapValueElement(Object data, Object key) {
Utf8 utf8key = new Utf8((String) key);
return super.getMapValueElement(data, utf8key);
}
@Override
public Object put(Object map, Object key, Object value) {
Utf8 utf8key = new Utf8((String) key);
return super.put(map, utf8key, value);
}
@Override
public Object remove(Object map, Object key) {
Utf8 utf8key = new Utf8((String) key);
return super.remove(map, utf8key);
}
{code}
> Use custom ObjectInspectors for AvroSerde
> -
>
> Key: HIVE-4734
> URL: https://issues.apache.org/jira/browse/HIVE-4734
> Project: Hive
> Issue Type: Improvement
> Components: Serializers/Deserializers
>Reporter: Mark Wagner
>Assignee: Mark Wagner
> Labels: Avro, AvroSerde, Performance
> Attachments: HIVE-4734.1.patch, HIVE-4734.2.patch, HIVE-4734.3.patch,
> HIVE-4734.4.patch, HIVE-4734.5.patch
>
>
> Currently, the AvroSerde recursively copies all fields of a record from the
> GenericRecord to a List row object and provides the standard
> ObjectInspectors. Performance can be improved by providing ObjectInspectors
> to the Avro record itself.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)