[ 
https://issues.apache.org/jira/browse/HIVE-12175?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14956961#comment-14956961
 ] 

Prasanth Jayachandran commented on HIVE-12175:
----------------------------------------------

>From kryo Readme.md

"The 3.0.0 release fixes many reported issues and improves stability and 
performance. The maven groupId is changed from com.esotericsoftware.kryo to 
com.esotericsoftware. The Unsafe-based IO serialization format was changed and 
is incompatible with previous versions (therefore the new major version), the 
standard serialization format is still compatible."

We won't be using unsafe based serialization in most of the scenarios. It will 
be much better for scenarios involving primitive arrays (vectorizedrowbatch?) 
when row by row copy is replaced by unsafe memcopy (BATCH_SIZE * sizeof 
primitive type). Plan serialization will still use the standard serialization 
format which is compatible with 2.22.

> Upgrade Kryo version to 3.0.x
> -----------------------------
>
>                 Key: HIVE-12175
>                 URL: https://issues.apache.org/jira/browse/HIVE-12175
>             Project: Hive
>          Issue Type: Improvement
>          Components: Serializers/Deserializers
>    Affects Versions: 2.0.0
>            Reporter: Prasanth Jayachandran
>            Assignee: Prasanth Jayachandran
>
> Current version of kryo (2.22) has some issue (refer exception below and in 
> HIVE-12174) with serializing ArrayLists generated using Arrays.asList(). We 
> need to either replace all occurrences of  Arrays.asList() or change the 
> current StdInstantiatorStrategy. This issue is fixed in later versions and 
> kryo community recommends using DefaultInstantiatorStrategy with fallback to 
> StdInstantiatorStrategy. More discussion about this issue is here 
> https://github.com/EsotericSoftware/kryo/issues/216. Alternatively, custom 
> serilization/deserilization class can be provided for Arrays.asList.
> Also, kryo 3.0 introduced unsafe based serialization which claims to have 
> much better performance for certain types of serialization. 
> Exception:
> {code}
> Caused by: java.lang.NullPointerException
>       at java.util.Arrays$ArrayList.size(Arrays.java:2847)
>       at java.util.AbstractList.add(AbstractList.java:108)
>       at 
> org.apache.hive.com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:112)
>       at 
> org.apache.hive.com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:18)
>       at 
> org.apache.hive.com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:694)
>       at 
> org.apache.hive.com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
>       ... 57 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to