spark-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sean Owen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SPARK-25047) Can't assign SerializedLambda to scala.Function1 in deserialization of BucketedRandomProjectionLSHModel
Date Wed, 08 Aug 2018 12:40:00 GMT

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

Sean Owen commented on SPARK-25047:
-----------------------------------

Thanks [~lrytz] – sounds like it is at least outside Spark's control. It only came up in
2 cases in the whole code base, and appears to be easily worked around by changing fields
like {{val foo: A => B = {...}}} to simple function definitions like {{def foo(a:A):B =
{...}}}. If I hear no objections I'll commit that change. It doesn't even appear to make the
bytecode different in this case (foo is a method in either case)

> Can't assign SerializedLambda to scala.Function1 in deserialization of BucketedRandomProjectionLSHModel
> -------------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-25047
>                 URL: https://issues.apache.org/jira/browse/SPARK-25047
>             Project: Spark
>          Issue Type: Sub-task
>          Components: ML
>    Affects Versions: 2.4.0
>            Reporter: Sean Owen
>            Priority: Major
>
> Another distinct test failure:
> {code:java}
> - BucketedRandomProjectionLSH: streaming transform *** FAILED ***
>   org.apache.spark.sql.streaming.StreamingQueryException: Query [id = 7f34fb07-a718-4488-b644-d27cfd29ff6c,
runId = 0bbc0ba2-2952-4504-85d6-8aba877ba01b] terminated with exception: Job aborted due to
stage failure: Task 0 in stage 16.0 failed 1 times, most recent failure: Lost task 0.0 in
stage 16.0 (TID 16, localhost, executor driver): java.lang.ClassCastException: cannot assign
instance of java.lang.invoke.SerializedLambda to field org.apache.spark.ml.feature.BucketedRandomProjectionLSHModel.hashFunction
of type scala.Function1 in instance of org.apache.spark.ml.feature.BucketedRandomProjectionLSHModel
> ...
>   Cause: java.lang.ClassCastException: cannot assign instance of java.lang.invoke.SerializedLambda
to field org.apache.spark.ml.feature.BucketedRandomProjectionLSHModel.hashFunction of type
scala.Function1 in instance of org.apache.spark.ml.feature.BucketedRandomProjectionLSHModel
>   at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2233)
>   at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1405)
>   at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2284)
> ...{code}
> Here the different nature of a Java 8 LMF closure trips of Java serialization/deserialization.
I think this can be patched by manually implementing the Java serialization here, and don't
see other instances (yet).
> Also wondering if this "val" can be a "def".



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org


Mime
View raw message