GitHub user rxin opened a pull request:
https://github.com/apache/spark/pull/4098
[SPARK-5307] SerializationDebugger - take 2
This patch adds a SerializationDebugger that is used to add serialization
path to a NotSerializableException. When a NotSerializableException is
encountered, the debugger visits the object graph to find the path towards the
object that cannot be serialized, and constructs information to help user to
find the object.
Compared with an earlier attempt, this one provides extra information
including field names, array offsets, writeExternal calls, etc.
An example serialization stack:
```
Serialization stack:
-object not serializable (class:
org.apache.spark.serializer.NotSerializable, value:
org.apache.spark.serializer.NotSerializable@2c43caa4)
-element of array (index: 0)
-array (class [Ljava.lang.Object;, size 1)
-field (class: org.apache.spark.serializer.SerializableArray, name:
arrayField, type: class [Ljava.lang.Object;)
-object (class org.apache.spark.serializer.SerializableArray,
org.apache.spark.serializer.SerializableArray@193c5908)
-writeExternal data
-externalizable object (class
org.apache.spark.serializer.ExternalizableClass,
org.apache.spark.serializer.ExternalizableClass@320bdadc)
```
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/rxin/spark SerializationDebugger
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/spark/pull/4098.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #4098
----
commit b349b77509229eee3ea5a7f3fbad6737b82d2e95
Author: Reynold Xin <[email protected]>
Date: 2015-01-19T05:55:01Z
[SPARK-5307] SerializationDebugger to help debug NotSerializableException -
take 2
This patch adds a SerializationDebugger that is used to add serialization
path to
a NotSerializableException. When a NotSerializableException is encountered,
the debugger
visits the object graph to find the path towards the object that cannot be
serialized,
and constructs information to help user to find the object.
Compared with an earlier attempt, this one provides extra information
including
field names, array offsets, writeExternal calls, etc.
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]