1

我想在 Spark 中使用 3rd 方库(Wiremock)。但是,我得到以下异常:

Caused by: java.io.NotSerializableException:com.github.tomakehurst.wiremock.WireMockServer
Serialization stack:
    - object not serializable(class:com.github.tomakehurst.wiremock.WireMockServer, value: com.github.tomakehurst.wiremock.WireMockServer@51813065)

有没有一般的方法来处理这个?

4

2 回答 2

0

有几个选项:

  1. Kryo 可能能够开箱即用地序列化这些对象,具体取决于其中的内容。尝试按照http://spark.apache.org/docs/latest/tuning.html中的说明打开它
  2. 如果这不起作用,您可以创建自己的实现 Serializable 的“包装器”对象,甚至是com.github.tomakehurst.wiremock.WireMockServer. 无需更改原始库。
  3. 如果库有自己的序列化函数,您也可以在包装器对象中使用这些函数。查看https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/SerializableWritable.scala以了解 Spark 使 Hadoop 的 Writables 可序列化的示例。
于 2017-03-10T06:04:36.560 回答
0

您可以制作不可序列化的字段transient。然后它就不会被序列化。

private transient WireMockServer wireMockServer;
于 2017-05-19T14:59:39.227 回答