首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Flink集群上找不到FlinkKafkaConsumer011

在Flink集群上找不到FlinkKafkaConsumer011
EN

Stack Overflow用户
提问于 2018-07-23 13:11:15
回答 1查看 1.4K关注 0票数 1

我试图在集群上运行Flink作业。这项工作在我的开发(本地)环境上运行良好。但是,当我使用命令将它部署到集群上时:

代码语言:javascript
复制
./bin/flink run -c org.example.CointegrationOfPairs ../coint.jar

如果出现错误,它将失败:

代码语言:javascript
复制
java.lang.NoClassDefFoundError: org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumer011
    at org.example.CointegrationOfPairs$.main(CointegrationOfPairs.scala:38)
    at org.example.CointegrationOfPairs.main(CointegrationOfPairs.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:528)
    at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:420)
    at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:404)
    at org.apache.flink.client.cli.CliFrontend.executeProgram(CliFrontend.java:785)
    at org.apache.flink.client.cli.CliFrontend.runProgram(CliFrontend.java:279)
    at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:214)
    at org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java:1025)
    at org.apache.flink.client.cli.CliFrontend.lambda$main$9(CliFrontend.java:1101)
    at org.apache.flink.runtime.security.NoOpSecurityContext.runSecured(NoOpSecurityContext.java:30)
    at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1101)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer011
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

我也添加了所需的依赖项。

代码语言:javascript
复制
val flinkDependencies = Seq(
  "org.apache.flink" %% "flink-scala" % flinkVersion % "provided",
  "org.apache.flink" %% "flink-streaming-scala" % flinkVersion % "provided",
  "org.apache.flink" %% "flink-connector-kafka-0.11" % flinkVersion % "provided",
  "org.apache.flink" %% "flink-ml" % flinkVersion % "provided"
)

我正在使用sbt clean assembly构建jar文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-23 15:10:49

连接器不包括在Flink的二进制发行版中,以避免它们的依赖项和用户代码的版本冲突。因此,对应的类在默认情况下不会加载到Flink进程的类路径中。

有两种方法可以解决这个问题:

  1. 不要按提供的方式设置flink-connnector-kafka依赖项。相反,构建一个包含连接器依赖项的胖jar。这样,连接器就与应用程序一起提供了。这是最好的办法。
  2. flink-connector-kafka依赖项的jar文件添加到Flink设置的./lib文件夹中。这将分发文件并将其包含在Flink进程的类路径中。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51479657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档