/ / NoSuchMethod-Ausnahme in Flink, wenn Dataset mit benutzerdefiniertem Objektarray verwendet wird - Scala, Maven, Apache-Flink

NoSuchMethod-Ausnahme in Flink, wenn Dataset mit benutzerdefiniertem Objektarray verwendet wird - Scala, Maven, Apache-Flink

Ich habe ein Problem mit Flink

java.lang.NoSuchMethodError: org.apache.flink.api.java.typeutils.ObjectArrayTypeInfo.getInfoFor(Lorg/apache/flink/api/common/typeinfo/TypeInformation;)Lorg/apache/flink/api/java/typeutils/ObjectArrayTypeInfo;
at LowLevel.FlinkImplementation.FlinkImplementation$$anon$6.<init>(FlinkImplementation.scala:28)
at LowLevel.FlinkImplementation.FlinkImplementation.<init>(FlinkImplementation.scala:28)
at IRLogic.GmqlServer.<init>(GmqlServer.scala:15)
at it.polimi.App$.main(App.scala:20)
at it.polimi.App.main(App.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...

Die Linie mit dem Problem ist diese

implicit val regionTypeInformation =
api.scala.createTypeInformation[FlinkDataTypes.FlinkRegionType]

in dem FlinkRegionType ich habe ein Array von benutzerdefinierten Objekten

Ich habe die App mit dem Maven-Plugin in der IDE entwickelt und alles funktioniert gut, aber wenn ich zu der Version wechsle, die ich von der Website heruntergeladen habe, bekomme ich den obigen Fehler

Ich benutze Flink 0.9

Ich dachte, eine Bibliothek könnte fehlen, aber ich benutze Maven, um alles zu erledigen. Außerdem läuft der Code von ObjectArrayTypeInfo.java Es scheint nicht das Problem zu sein

Antworten:

3 für die Antwort № 1

EIN NoSuchMethodError zeigt gewöhnlich an, dass die Version nicht übereinstimmtBibliotheken, mit denen ein Flink-Programm erstellt wurde, und das System, auf dem das Programm ausgeführt wird. Insbesondere wenn derselbe Code in einem IDE-Setup funktioniert, in dem die Kompilierungs- und Ausführungsbibliotheken gleich sind.

In diesem Fall sollten Sie die Version der Flink-Abhängigkeiten überprüfen, z. B. in der Maven-POM-Datei.