J'essaie de diffuser des données à partir de kafka à l'aide de flink. Mon code compile sans erreur, mais sur l'exécution, je reçois l'erreur suivante:NoClassDefFoundError lors de l'exécution du flink avec le connecteur kafka
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/flink/streaming/util/serialization/DeserializationSchema
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.util.serialization.DeserializationSchema
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
Ma POM liste de dépendance est la suivante:
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-core</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients</artifactId>
<version>0.10.2</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka-0.9_2.11</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
Le code java que je suis en train de courir souscrit simplement à un kafka sujet appelé 'streamer':
import java.util.Properties;
import java.util.Arrays;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer09;
import org.apache.flink.streaming.util.serialization.SimpleStringSchema;
import org.apache.flink.streaming.util.serialization.DeserializationSchema;
public class StreamConsumer {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "localhost:9092");
properties.setProperty("group.id", "samplegroup");
DataStream<String> messageStream = env.addSource(new FlinkKafkaConsumer09<String>("streamer", new SimpleStringSchema(), properties));
messageStream.rebalance().map(new MapFunction<String, String>() {
private static final long serialVersionUID = -6867736771747690202L;
@Override
public String map(String value) throws Exception {
return "Streamed data: " + value;
}
}).print();
env.execute();
}
}
informations système:
1. Version Kafka: 0.9.0.1
2. Version Flink: 1.3.2
3. version OpenJDK: 1.8
Bien que j'utilise maven, je ne pense pas que ce soit une question de maven parce que je reçois la même erreur, même lorsque je tente sans Maven. J'ai téléchargé manuellement tous les fichiers .jar nécessaires dans un dossier et spécifié ce chemin de dossier avec l'option -cp lors de la compilation avec javac. J'obtiens la même erreur que ci-dessus pendant l'exécution mais aucune erreur pendant la compilation.
J'ai essayé, mais les versions mentionnées ici sont les plus récentes. – raviabhiram
flink-streaming-core n'existe plus et est subsumé par flink-streaming-java_. flink-clients a également un suffixe scala maintenant. –
J'ai essayé avec ces dépendances et j'ai toujours la même erreur. J'ai ajouté le code java ci-dessus. – raviabhiram