【问题标题】:Dependency not found when added to Flink lib folder添加到 Flink lib 文件夹时未找到依赖项
【发布时间】:2021-02-07 11:44:29
【问题描述】:

你好 Flink 社区,

按照文档解决在 Flink 中卸载动态加载的类的问题,我将数据库驱动程序库添加到运行在 K8s 上的 Flink JobManager 容器和 TaskManager 容器的 opt/flink/lib 文件夹中(Flink Session Cluster,版本:1.11) .

我将库标记为我的 build.sbt 文件中提供的。 其余的用户代码是由 sbt 程序集构建的 fat jar 的一部分。

现在,当我使用 Flink API(上传和运行端点)向 flink 集群提交作业时,由于以下错误,它不会接受该作业:

java.lang.ClassNotFoundException: com.vertica.jdbc.Driver

为什么 jar 没有被 Flink 类加载器拾取?

我什至在配置选项中添加了类模式,没有任何区别:

classloader.parent-first-patterns-additional: com.vertica.jdbc.;

链接:https://ci.apache.org/projects/flink/flink-docs-release-1.12/ops/debugging/debugging_classloading.html#unloading-of-dynamically-loaded-classes-in-user-code

任何建议都将受到高度赞赏。

干杯

【问题讨论】:

  • @Tamir1989 抱歉,不是重复的,因为 vertica jdbc 驱动程序不是插件。已经尝试过您发布的答案中建议的解决方案。在这种情况下它不起作用。

标签: apache-flink


【解决方案1】:

请确认未提供您的 jdbc maven 依赖项。 当提供库时,库在编译和测试时处于活动状态。

【讨论】:

  • 我正在使用 SBT,并且依赖项设置为提供以确保它不包含在 sbt 程序集构建的 FatJar 中。我这样做是因为我在卸载类时遇到问题。在文档中(上面发布的链接建议不要将 jdbc 驱动程序包含到 fat jar 中,以确保它们只加载一次)
猜你喜欢
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2014-04-23
  • 2022-12-18
  • 1970-01-01
  • 2017-11-29
  • 2020-09-21
  • 1970-01-01
相关资源
最近更新 更多