无法在flink dashboard 1.3.2版中执行cep模式,这是由classnotfoundexception引起的

qvsjd97n  于 2021-06-25  发布在  Flink
关注(0)|答案(2)|浏览(474)

我写了这样一个简单的模式

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
yv5phkfx

yv5phkfx1#

如果您不想手动添加依赖项,或者您有一个maven或sbt项目,您可以简单地将依赖项添加到.pom文件或相应的sbt文件中,然后添加以下依赖项。
根据项目需要更改flink版本。

<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-cep_2.11 -->
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-cep_2.11</artifactId>
  <version>1.3.2</version>
</dependency>

// https://mvnrepository.com/artifact/org.apache.flink/flink-cep_2.11
libraryDependencies += "org.apache.flink" % "flink-cep_2.11" % "1.3.2"
ocebsuys

ocebsuys2#

经过一整天的努力,我终于找到了解决这个问题的办法。问题是非常基本的,即flink cep不是二进制分布的一部分,所以每当我尝试执行模式时,它都会给我一个错误。
解决办法很简单

正如您所看到的,flink二进制文件没有cep jar。
因此,转到您的ide,在我的例子中是intellij,并复制所需的jar

转到这个位置,将这个jar复制粘贴到二进制版本的lib文件夹中。
雅拉,问题解决了

相关问题