Dominik

You are correct. Thanks very much.

After moving it to inside the prepare() method the error stopped happening.

Thanks
--
IPVP


From: Dominik V. 
<[email protected]><mailto:[email protected]>
Reply: [email protected] 
<[email protected]>><mailto:[email protected]>
Date: March 26, 2016 at 9:16:58 PM
To: [email protected] <[email protected]>><mailto:[email protected]>
Subject:  Re: What can be causing NotSerializableException ?

When you say "pre-existing" does that mean you set the DAO before the topology 
is submitted? Because that would cause a serialization exception if no custom 
serializer is provided.
At which point do you create OrderDAO? Without a custom serializer this must 
not be done in the Bolt's constructor, but can be done, for example, in the 
Bolt's prepare method.
From your exception it looks like you did:

class YourBolt {
        private OrderDAO DAO;
        public YourBolt() {
                DAO = new OrderDAO();
        }
}

In contrast to:

class YourBolt {
        private OrderDAO DAO;
        public void prepare() {
                DAO = new OrderDAO();
        }
}

2016-03-26 16:18 GMT+01:00 I PVP <[email protected]<mailto:[email protected]>>:
Dominik,

Thanks for your answer.

The only thing I am doing is ,inside the bolt Execute() method , calling 
OrderDAO.findbyID() that uses Hibernate to retrieve the Order from MySql Table.
The Topology sets de KafkaSpout and the Bolt and that is all.

When you say “...suppose you are setting the MySqlDB attribute in the Bolt's 
constructor..”   Does that mean  Storm requires that something specific is done 
before being able to call MySql or can I just use my pre-existing DAO that 
calls Hibernate to get the MySql data  ?

Thanks

--
IPVP


From: Dominik V. 
<[email protected]><mailto:[email protected]>
Reply: [email protected]<mailto:[email protected]> 
<[email protected]>><mailto:[email protected]>
Date: March 26, 2016 at 11:48:38 AM
To: [email protected]<mailto:[email protected]> 
<[email protected]>><mailto:[email protected]>
Subject:  Re: What can be causing NotSerializableException ?

I suppose you are setting the MySqlDB attribute in the Bolt's constructor? The 
constructor is called *before* serializing the Topology and submitting it to 
the cluster. Therefore every object within the Topology *before* submitting it 
must be serializable.
You can solve this bei either providing a custom serializer, read more here: 
http://storm.apache.org/releases/0.10.0/Serialization.html
Or you set the MySqlDB object in the Bolt's prepare method which is called 
*after* submitting the topology.

2016-03-26 0:06 GMT+01:00 I PVP <[email protected]<mailto:[email protected]>>:
Hi everyone,

What can be causing  a “java.io.NotSerializableException ….Caused by: 
java.io.NotSerializableException: 
com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers" ?

I new to Storm.
After successfully developing, deploying to cluster  and seeing my first 4 
Topologies( all simple: KafkaSpout-> Bolt) running fine for the last 2 days,  
today I created the 5th Topology that the only difference from the others is 
the Bolt retrieving a object  from MySqlDB via a pre existing application wide 
Hibernate DAO.

Stack Trace :

RUNNING locally via LocalCluster:
-----
30239 [main] INFO  b.s.d.supervisor - Starting supervisor with id 
c4c8647d-fee5-45a4-a44d-943e5e03e3b0 at host 192.168.56.1
30335 [main] ERROR o.a.s.s.o.a.z.s.NIOServerCnxnFactory - Thread 
Thread[main,5,main] died
java.lang.RuntimeException: java.io.NotSerializableException: 
com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers
at backtype.storm.utils.Utils.javaSerialize(Utils.java:91) 
~[storm-core-0.10.0.jar:0.10.0]
at 
backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:107)
 ~[storm-core-0.10.0.jar:0.10.0]
at <my package 
name>.storm.topology.OrderCreatedTopology.main(OrderCreatedTopology.java:54) 
~[classes/:?]
Caused by: java.io.NotSerializableException: 
com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_60]
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
~[?:1.8.0_60]
at backtype.storm.utils.Utils.javaSerialize(Utils.java:87) 
~[storm-core-0.10.0.jar:0.10.0]
-----
SUBMITTING to Cluster via StormSubmitter.submitTopology()
-----
...
658 [main] INFO  b.s.u.Utils - Using defaults.yaml from resources
3922 [main] INFO  b.s.u.Utils - Using storm.yaml from resources
Exception in thread "main" java.lang.RuntimeException: 
java.io.NotSerializableException: 
com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers
at backtype.storm.utils.Utils.javaSerialize(Utils.java:91)
at 
backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:107)
at <my package 
name>.storm.topology.OrderCreatedTopology.main(OrderCreatedTopology.java:47)
Caused by: java.io.NotSerializableException: 
com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at backtype.storm.utils.Utils.javaSerialize(Utils.java:87)
-----

—


Thanks
IPVP



Reply via email to