I feed Avro data as follows, turning it into SparseInstances, and leaving
Kryo serde for all internal streams in the topology.

bin/samoa samza target/SAMOA-Samza-0.4.0-incubating-SNAPSHOT.jar
"PrequentialEvaluation -e F1ClassificationPerformanceEvaluator -i -1 -l
(classifiers.ensemble.Bagging -s 10) -s (AvroFileStream -s
HDFSFileStreamSource -f /tmp/order_and_feats_flat_avro/2016_02_26/ -c 1 -e
binary -w 200:1) -f 10000"

It works fine in Local mode, but when deployed to Samza, I get the
following error. SparseInstanceData, which it complains it lacks a default
constructor, must have worked with Kryo SerDe at some point.

org.apache.samza.system.SystemConsumersException: Cannot deserialize an
incoming message for SystemStream [system=kafka0,
stream=Prequential_20160316182522-0-1-0]
        at
org.apache.samza.system.SystemConsumers.update(SystemConsumers.scala:303)
        at
org.apache.samza.system.SystemConsumers.tryUpdate(SystemConsumers.scala:270)
        at org.apache.samza.system.SystemConsumers.org
$apache$samza$system$SystemConsumers$$poll(SystemConsumers.scala:258)
        at
org.apache.samza.system.SystemConsumers$$anonfun$refresh$2.apply(SystemConsumers.scala:286)
        at
org.apache.samza.system.SystemConsumers$$anonfun$refresh$2.apply(SystemConsumers.scala:286)
        at
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at scala.collection.Iterator$class.foreach(Iterator.scala:727)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
        at scala.collection.MapLike$DefaultKeySet.foreach(MapLike.scala:174)
        at
scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
        at
scala.collection.AbstractSet.scala$collection$SetLike$$super$map(Set.scala:47)
        at scala.collection.SetLike$class.map(SetLike.scala:93)
        at scala.collection.AbstractSet.map(Set.scala:47)
        at
org.apache.samza.system.SystemConsumers.refresh(SystemConsumers.scala:286)
        at
org.apache.samza.system.SystemConsumers.choose(SystemConsumers.scala:211)
        at
org.apache.samza.container.RunLoop$$anonfun$process$1$$anonfun$1.apply(RunLoop.scala:108)
        at
org.apache.samza.container.RunLoop$$anonfun$process$1$$anonfun$1.apply(RunLoop.scala:108)
        at
org.apache.samza.util.TimerUtils$class.updateTimer(TimerUtils.scala:37)
        at org.apache.samza.container.RunLoop.updateTimer(RunLoop.scala:35)
        at
org.apache.samza.container.RunLoop$$anonfun$process$1.apply$mcVJ$sp(RunLoop.scala:107)
        at
org.apache.samza.util.TimerUtils$class.updateTimerAndGetDuration(TimerUtils.scala:51)
        at
org.apache.samza.container.RunLoop.updateTimerAndGetDuration(RunLoop.scala:35)
        at org.apache.samza.container.RunLoop.process(RunLoop.scala:106)
        at org.apache.samza.container.RunLoop.run(RunLoop.scala:74)
        at
org.apache.samza.container.SamzaContainer.run(SamzaContainer.scala:558)
        at
org.apache.samza.container.SamzaContainer$.safeMain(SamzaContainer.scala:93)
        at
org.apache.samza.container.SamzaContainer$.main(SamzaContainer.scala:67)
        at
org.apache.samza.container.SamzaContainer.main(SamzaContainer.scala)
Caused by: com.esotericsoftware.kryo.KryoException: Class cannot be created
(missing no-arg constructor): org.apache.samoa.instances.SparseInstanceData
Serialization trace:
instanceData (org.apache.samoa.core.SerializableInstance)
instance (org.apache.samoa.learners.InstanceContent)
instanceContent (org.apache.samoa.learners.InstanceContentEvent)
        at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1050)
        at com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1062)
        at
com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:228)
        at
com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:217)
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
        at
com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
        at
com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
        at
com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
        at
com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
        at com.esotericsoftware.kryo.Kryo.readObjectOrNull(Kryo.java:699)
        at
com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:611)
        at
com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
        at
org.apache.samoa.utils.SamzaKryoSerdeFactory$SamzaKryoSerde.fromBytes(SamzaKryoSerdeFactory.java:147)
        at
org.apache.samza.serializers.SerdeManager.fromBytes(SerdeManager.scala:115)
        at
org.apache.samza.system.SystemConsumers.update(SystemConsumers.scala:300)
        ... 28 more

Reply via email to