Kubernetes 上的 Flink 会话集群中的外部依赖项出现 ClassNotFoundException

问题描述 投票:0回答:1

我目前正在使用 Flink Kubernetes Operator 在 Kubernetes 上部署 Flink 会话集群。我的 Flink 作业使用 DataStream API 来实现其逻辑,需要多个外部依赖项。 ,所以我使用了一个 init 容器将所有必需的 jar 复制到 /mnt/external-jars 路径,该路径按预期安装。

为了将这些外部 jar 包含在我的工作中,我已将它们添加到配置中的 pipeline.classpaths 属性中,如下所示:

pipeline.classpaths:文件:///mnt/external-jars/mysql-connector-java-8.0.28.jar;file:///mnt/external-jars/flink-connector-kafka-1.17.2.jar ;文件:///mnt/external-jars/flink-shaded-guava-30.1.1-jre-16.2.jar;文件:///mnt/external-jars/kafka-clients-3.4.1.jar

尽管如此设置,但在提交作业时,我遇到了 com.mysql.jdbc.Driver 的 java.lang.ClassNotFoundException。这让我产生疑问:

我的理解是否正确: pipeline.classpaths 属性旨在以这种方式加载外部依赖项? Flink Kubernetes Operator 是否支持 pipeline.classpaths 属性,或者是否存在已知的限制? Kubernetes 操作上下文中是否有任何替代方法或解决方法来确保 Flink 作业正确识别和加载外部依赖项? 任何解决此问题的见解或建议将不胜感激。

apache-flink
1个回答
0
投票

通常,我会在作业的 JAR 文件中添加所有必需的依赖项。 官方文档也推荐这样做。

如果您使用 Maven 或 Gradle,您可以检查 Maven Repository 网站以获取可用的依赖项。

请注意,目前 Flink 1.18.X 不支持 JDBC 连接器。

© www.soinside.com 2019 - 2024. All rights reserved.