0
我正在嘗試從kafka主題中傳輸事件並將它們保存到Infinispan。Apache Spark任務中的Infinispan RemoteCache - RemoteCache不可序列化
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: [email protected])
有關如何解決此問題的任何想法?
我有RemoteCache實例在啓動時初始化(這使得它駐留在主服務器中)。然後我嘗試引用foreachRDD()中的初始化緩存,這需要序列化。我實質上做的是stream.map(parse).countByValue()。foreachRDD {rdd => rdd.foreach(saveToInfinispan)}。我必須在saveToInfinispan內初始化RemoteCache。在foreachRDD()中初始化它是不夠的。我認爲這樣做效率低下,我錯了嗎?有沒有更合理的方法?無論如何,你的回答是正確的,謝謝你! – siltalau
您可能對Infinispan Spark連接器感興趣,將DStream保存到遠程緩存是支持的用例之一http://blog.infinispan.org/2015/08/infinispan-spark-connector-01-released.html – gnf