当前位置: 首页 > 知识库问答 >
问题:

Java NoClassDefFoundError:Apache Flink复杂事件处理

艾宁
2023-03-14

我正在尝试了解Apache Flink CEP程序,该程序用于监控数据中心中的机架温度,如Flink官方文档所述。但是当我按照步骤使用mvn clean package创建jar并尝试使用命令执行包时

java -cp "../cep-monitoring-1.0.jar" org.stsffap.cep.monitoring.CEPMonitoring

但我有以下错误,

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/source/SourceFunction
    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.api.functions.source.SourceFunction
    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

我尝试了给出这里描述的类路径的不同变体,但得到了相同的错误。有人能指出我在运行程序时的错误吗?

共有2个答案

松旭
2023-03-14

cep示例使用flink版本1.3.2。下面是运行它的步骤。

  1. 安装apache flink的1.3.2版。(wgetit from here and extract it)
  2. cd插入flink-1.3.2
  3. <代码>/装箱/本地启动。sh,这将启动flink群集。执行cd
  4. 使用git Clone和cd克隆此repo
  5. mvn clean package来构建项目。这将创建目标目录
  6. 运行<代码>/flink-1.3.2/bin/flink run target/cep-monitoring-1.0。jar,启动进程
  7. 在单独的终端中,可以这样记录输出(假设您与前一步位于同一目录中)tail-f/flink-1.3.2/日志/flink-*-jobmanager-*。out(*将替换为特定的用户详细信息,请按tab键自动完成这些信息)

这是示例输出,

rshah9@bn18-20:~/tools/cep-monitoring-master$ tail -f ../flink-1.3.2/log/flink-rshah9-jobmanager-0-bn18-20.dcs.mcnc.org.out
TemperatureWarning(9, 102.45860162626161)
TemperatureWarning(6, 113.21295716135027)
TemperatureWarning(5, 105.46064102697723)
TemperatureWarning(0, 106.44635415722034)
TemperatureWarning(4, 112.07396748089734)
TemperatureWarning(9, 114.53346561628322)
TemperatureWarning(3, 109.05305417712648)
TemperatureWarning(7, 112.3698094257147)
TemperatureWarning(3, 107.78609416982076)
TemperatureWarning(9, 107.34373990230458)
TemperatureWarning(5, 111.46480675461656)
东方建修
2023-03-14

要向本地Flink群集提交作业,请执行以下操作:

  1. 运行Flink

<代码>/path/to/flink-1.4.0/bin/start-local。sh

<代码>/path/to/flink-1.4.0/bin/flink run-c com。包裹YourClass/path/to/jar。jar

或者,您可以简单地从IDE运行作业:

在这种情况下,您的工作将在Flink环境中运行。查看Flink的示例:https://github.com/apache/flink/blob/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/wordcount/WordCount.java

 类似资料:
  • 我有一个离散事件流进入我的系统,我需要根据每个事件的内容应用规则。另外,我想对这些流事件应用复杂的事件处理。 约束1.这些规则是用户提供的,并将动态更改。2.每当应用规则时,我不想重新启动我的系统。3.HA 4.只有成熟的开源解决方案 可能的方式...1.在Storm螺栓内运行Esper CEP 2。让口水流到Storm螺栓里 > 这会处理单事件规则和复杂事件吗?规则更改是否需要我的Storm重新

  • 我有一个flink cep代码,可以从套接字读取数据并检测模式。假设模式(单词)为“警报”。如果单词alert出现五次或五次以上,则应创建一个警报。但我得到了一个输入不匹配错误。Flink版本为1.3.0。提前谢谢!!

  • 我一直在寻找如何将apache storm用作CEP的方法,但似乎有两个概念(流处理和复杂事件处理),在CEP中,您可以编写类似sql的查询,并在数据流上执行它们,如ESPER,但我在apache storm中找不到类似的东西,这是否意味着apache storm是一个数据流处理器而不是CEP?

  • 我想根据具有相同标识符的两个事件来检测两个事件是否在定义的时间范围内发生。例如,如下所示: 下面示例中的My DoorEvent java类具有相同的结构。 我想检测id为1的门在打开后5分钟内关闭。为此,我尝试使用Apache flink CEP库。传入流包含来自20扇门的所有打开和关闭消息。 如何在中将门1的状态保存为打开,以便在步骤中我知道门1是关闭的门,而不是其他门?

  • 我们需要在constructor中对于事件与对应的handler函数进行绑定. 大多数时候我们在发出DOM事件的组件内部写我们的handler函数. 在下面的例子中,我们在组件内部创建了一个click handler, 因为我们想所有的Swithcer Component当被点击时,做出同样的响应. class Switcher extends React.Component { render

  • 我不喜欢流口水。我正在尝试使用Drools Fusion编写一个简单的复杂事件处理(CEP)应用程序。 我的要求是 我有一个简单的Event类,如下所示: 规则文件如下: 为了进行测试,我将向工作内存中注入4个事件,分别是e1、e2、e3、e4,时间线分别为0m、4m、10m、12m。 Jave类文件 我希望e1通过规则,因为它没有前面的事件。我还预计e3将通过,因为前面的比赛还有6分钟。 但是,