Reporters do not have access to libraries provided with user-jars.
They are instantiated when JM/TM starts, i.e. before any user-code is
My recommendation would be to either put the kafka dependencies in the
/lib folder or try to relocate the kafka code in the reporter.
On 11.07.2018 14:59, Gyula Fóra wrote:
I have ran into the following problem and I want to double check
wether this is intended behaviour.
I have a custom metrics reporter that pushes things to Kafka (so it
creates a KafkaProducer in the open method etc.etc.) for my streaming job.
Naturally as my Flink job consumes from Kafka so it has the kafka
connector dependencies I set the Kafka dependencies to provided in my
metric reporter project and I put the built kafkaReporter.jar into the
Flink lib. However it seems that the metrics reporter is instantiated
without the user code classes since I get a NoClassdefFound error for
KafkaProducer even though my streaming job starts successfully
Any ideas why this happens and how to solve it? I am slightly against
putting the kafka dependencies twice on the classpath as it has only
caused problems in the past...