首页 > 解决方案 > 将多个 Apache Beam 管道打包到一个 jar 文件中

问题描述

我正在开发一个项目,其中包含许多用 Java 编写的 Beam 管道,这些管道需要打包为 jar 文件,以便从我们的作业调度程序执行。我尝试使用构建配置文件为每个主创建一个 jar,但这看起来很混乱,而且我遇到了依赖冲突问题(使用 beam-sdks-java-io-amazon-web-services 时,它仍然在寻找对于所需的区域选项)。我也只是在为不断增长的 Beam 代码库寻找整体可持续的项目结构建议。

按计划执行打包管道的最佳实践是什么?我是否应该将多个管道打包在一起,以便我可以使用管道名称和管道选项参数执行每个管道,如果是,如何?(可能使用某种基于输入参数执行管道的主运行器 main)或者每个管道应该是它自己的 Maven 项目(这需要很多 jars)?想法?

标签: javamavenexecutable-jarapache-beam

解决方案


我不认为有解决这个问题的推荐方法。每种方式都有优点和缺点(例如,考虑更新管道的工作量)。

如果它适合你,我认为常见的 jar 解决方案很好。例如,同一个包中有多个Beam 示例管道,您可以通过指定 main class 来运行它们。它类似于您要实现的目标。

是否需要主主也取决于您的项目和环境的具体情况。无需额外的管理代码,只需使用java -cp mainclass和绕过就足够了。


推荐阅读