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

Mohammad Kamrul Islam commented on HIVE-1511:
---------------------------------------------

Thanks to [~ashutoshc] and [~brocknoland] for moving it to this far!

I think I isolated the issue in some extent. Looks like it is a bug in Kryo.

At first, I created an XML plan file for the failed case using our existing 
java based serialization.

Then I wrote (copied from Ashutosh) an independent java class that deserializes 
the plan XML in MapRedWork object using XMLDecoder. After that, the code 
serializes the MapredWork object using Kryo. At last, deserialize it using 
Kryo. In this case, serialization with Kryo succeeds but deserialization with 
Kryo fails with the following exception. It is important to note that the 
simpler version of plan XML succeeds using the same utility.

   
I'm going to attach three files:
1. Independent Java code to test <KryoHiveTest.java>.
2. Script to compile and run <run.sh>. (Run with "run.sh generated_plan.xml")
3. Generated plan in XML <generated_plan.xml> that fails.

 [~romixlev] : do you have any suggestion? I think you are also active in Kryo. 
Should i send an email to kayo list?




Exception:
{quote}
Exception in thread "main" com.esotericsoftware.kryo.KryoException: 
java.lang.IndexOutOfBoundsException: Index: 12416, Size: 1504
Serialization trace:
rslvMap (org.apache.hadoop.hive.ql.parse.RowResolver)
rr (org.apache.hadoop.hive.ql.parse.OpParseContext)
opParseCtxMap (org.apache.hadoop.hive.ql.plan.MapWork)
mapWork (org.apache.hadoop.hive.ql.plan.MapredWork)
        at 
com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:125)
        at 
com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:485)
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
        at 
com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
        at 
com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:485)
        at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:760)
        at 
com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:139)
        at 
com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:17)
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
        at 
com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
        at 
com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:485)
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
        at 
com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
        at 
com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:485)
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:657)
        at KryoHiveTest.fun(KryoHiveTest.java:51)
        at KryoHiveTest.main(KryoHiveTest.java:25)
Caused by: java.lang.IndexOutOfBoundsException: Index: 12416, Size: 1504
        at java.util.ArrayList.RangeCheck(ArrayList.java:547)
        at java.util.ArrayList.get(ArrayList.java:322)
        at 
com.esotericsoftware.kryo.util.MapReferenceResolver.getReadObject(MapReferenceResolver.java:42)
        at com.esotericsoftware.kryo.Kryo.readReferenceOrNull(Kryo.java:804)
        at com.esotericsoftware.kryo.Kryo.readObjectOrNull(Kryo.java:728)
        at 
com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:127)
        at 
com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:17)
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
        at 
com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
        ... 16 more
{quote}
                
> Hive plan serialization is slow
> -------------------------------
>
>                 Key: HIVE-1511
>                 URL: https://issues.apache.org/jira/browse/HIVE-1511
>             Project: Hive
>          Issue Type: Improvement
>    Affects Versions: 0.7.0
>            Reporter: Ning Zhang
>            Assignee: Mohammad Kamrul Islam
>         Attachments: HIVE-1511.4.patch, HIVE-1511.5.patch, HIVE-1511.6.patch, 
> HIVE-1511.7.patch, HIVE-1511.8.patch, HIVE-1511.patch, HIVE-1511-wip2.patch, 
> HIVE-1511-wip3.patch, HIVE-1511-wip4.patch, HIVE-1511-wip.patch
>
>
> As reported by Edward Capriolo:
> For reference I did this as a test case....
> SELECT * FROM src where
> key=0 OR key=0 OR key=0 OR  key=0 OR key=0 OR key=0 OR key=0 OR key=0
> OR key=0 OR key=0 OR key=0 OR
> key=0 OR key=0 OR key=0 OR  key=0 OR key=0 OR key=0 OR key=0 OR key=0
> OR key=0 OR key=0 OR key=0 OR
> ...(100 more of these)
> No OOM but I gave up after the test case did not go anywhere for about
> 2 minutes.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to