我写了这样一个简单的模式
Pattern<JoinedEvent, ?> pattern = Pattern.<JoinedEvent>begin("start")
.where(new SimpleCondition<JoinedEvent>() {
@Override
public boolean filter(JoinedEvent streamEvent) throws Exception {
return streamEvent.getRRInterval()>= 10 ;
}
}).within(Time.milliseconds(WindowLength));
它在intellijidea中执行得很好。我在 Jmeter 板和intellij idea中都使用flink1.3.2。当我从源代码构建flink时,我看到了很多警告消息,这使我相信迭代条件类并没有像error所说的那样包含在jar中 ClassNotFoundException
. 下面是错误
Caused by: java.lang.NoClassDefFoundError: org/apache/flink/cep/pattern/conditions/IterativeCondition
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
org.apache.flink.client.program.PackagedProgram.hasMainMethod(PackagedProgram.java:492)
... 38 more
Caused by: java.lang.ClassNotFoundException: org.apache.flink.cep.pattern.conditions.IterativeCondition
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 44 more
2条答案
按热度按时间yv5phkfx1#
如果您不想手动添加依赖项,或者您有一个maven或sbt项目,您可以简单地将依赖项添加到.pom文件或相应的sbt文件中,然后添加以下依赖项。
根据项目需要更改flink版本。
ocebsuys2#
经过一整天的努力,我终于找到了解决这个问题的办法。问题是非常基本的,即flink cep不是二进制分布的一部分,所以每当我尝试执行模式时,它都会给我一个错误。
解决办法很简单
正如您所看到的,flink二进制文件没有cep jar。
因此,转到您的ide,在我的例子中是intellij,并复制所需的jar
转到这个位置,将这个jar复制粘贴到二进制版本的lib文件夹中。
雅拉,问题解决了