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

Infinispan RemoteCache in an Apache Spark task - RemoteCache not serializable

我正在尝试从 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)

关于如何解决这个问题的任何想法?

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