Apache Spark任务中的Infinispan RemoteCache - RemoteCache不可序列化

时间:2015-04-28 12:19:09

标签: apache-spark infinispan

我正在尝试从kafka主题中传输事件并将其保存到Infinispan。

Infinispan作为独立服务器部署 - 因此未嵌入。

提交了Spark任务后,我向Kafka主题添加了一条消息,供我们使用。当它试图这样做时,有一个例外:

Error running job streaming job 1430222654000 ms.0 org.apache.spark.SparkException: Task not serializable
...
Caused by: java.io.NotSerializableException: org.infinispan.client.hotrod.impl.RemoteCacheImpl
Serialization stack:
    - object not serializable (class: org.infinispan.client.hotrod.impl.RemoteCacheImpl, value: org.infinispan.client.hotrod.impl.RemoteCacheImpl@43a5194d)

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:3)

当您声明对主驱动程序中的字段的引用(在任务之外)然后在工作程序(在任务内部)中引用它时,Spark中可能发生上述错误。由于RemoteCacheImpl不是Serializable,因此无法通过网络传送。 尝试在任务本身内获取对RemoteCache的引用,而不是依赖于闭包来执行此操作。