2017-06-19 8 views
0

Je cours dans une exception en essayant de sérialiser un objet KieBase dans Spark.Spark & ​​Drools - Comment sérialiser KieBase avec Kryo

Lorsque j'exécute le code suivant:

val kieBase = kieContainer.getKieBase 
val broadcastKieBase = spark.sparkContext.broadcast(kieBase) 

A ConcurrentModificationException est élevée

Exception dans le thread "principal" com.esotericsoftware.kryo.KryoException: java.util.ConcurrentModificationException

En regardant autour de moi aussi j'ai trouvé this is a known problem, mais toujours pas de solution.

Quelqu'un sait comment sérialiser une instance KieBase avec Kryo?

Répondre

0

KieBase ne peut pas être sérialisé. Au lieu de créer une classe singleton et avoir la KieBase dans l'exécuteur. Chaque exécuteur aura sa propre instance.

+0

KieBase peut être sérialisé avec succès en utilisant 'JavaSerializer'. Par exemple 'kryo.register (KieBase.class, nouveau JavaSerializer());' la question est de savoir comment le faire uniquement avec Kryo. – freedev