Apache Flink Job Jar 应该排除什么?

What should be excluded from a Apache Flink Job Jar?

当打包一个使用例如一些 flink 连接器和一些第三方库(用于处理)的 flink 作业时,哪些依赖项应该最终出现在作业 jar 中,以便它可以在 flink-cluster 中使用("flink run [jarfile]")?

做一个胖罐子是理想的方法吗?

如果在 scala 中编写作业,是否在 jar 中包含 scala 默认库?

我没有找到任何关于如何为 flink 编写作业打包的文档。

是的,fat-jar 是打包 Flink 作业的标准方式。不得包含 Flink 发行版中包含的所有内容(即 Java 和 Scale 默认库、Flink 核心等)。 fat-jar只需要包含一些没有包含的Flink库(加上用户定义的外部依赖)。

您可以遵循 Flink 文档中的指南:https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/cluster_execution.html#linking-with-modules-not-contained-in-the-binary-distribution

这也可能有帮助:https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/common/index.html#program-packaging-and-distributed-execution