2017-03-10 3 views
0

Spark에서 타사 라이브러리 (Wiremock)를 사용하고 싶습니다. 그러나 다음 예외가 발생합니다.Spark에서 Serializable이 아닌 타사 라이브러리를 사용하는 방법

Caused by: java.io.NotSerializableException:com.github.tomakehurst.wiremock.WireMockServer 
Serialization stack: 
    - object not serializable(class:com.github.tomakehurst.wiremock.WireMockServer, value: [email protected]) 

이 문제를 해결할 수있는 일반적인 방법이 있습니까?

답변

0

은 몇 가지 옵션이 있습니다 :

  1. Kryo 그들 안에 무엇이 따라 상자에서 이러한 개체를 직렬화 할 수 있습니다. http://spark.apache.org/docs/latest/tuning.html
  2. 으로 해결할 수없는 경우 Serializable 또는 com.github.tomakehurst.wiremock.WireMockServer 하위 클래스를 구현하는 자체 "래퍼"개체를 만들 수 있습니다. 원본 라이브러리를 변경할 필요가 없습니다.
  3. 라이브러리에 자체 직렬화 함수가있는 경우 랩퍼 객체 내부의 함수를 사용할 수도 있습니다. Spark이 Hadoop의 Writables를 직렬화 가능하게 만드는 예제를 보려면 https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/SerializableWritable.scala을보십시오.
0

필드를 직렬화 할 수 없도록 만들 수 있습니다. transient. 그렇다면 그것은 단지 연재되지 않을 것입니다.

private transient WireMockServer wireMockServer;