【发布时间】:2018-02-28 16:36:14
【问题描述】:
我至少知道 2 种方法可以将我的依赖项放入 Spark EMR 作业。一种是创建一个fat jar,另一种是使用--packages 选项指定您希望在spark 中提交的包。
胖罐子需要很长时间才能拉上拉链。这正常吗?约 10 分钟。有没有可能是我们配置不正确?
命令行选项很好,但容易出错。
还有其他选择吗?如果有(已经存在)一种将依赖项列表包含在 gradle 的 jar 中的方法,我会喜欢它,然后让它下载它们。这可能吗?还有其他选择吗?
更新:我发布了部分答案。我在最初的问题中没有明确说明的一件事是,我也关心你何时有依赖冲突,因为你有不同版本的同一个 jar。
更新
感谢您对减少依赖项数量或尽可能使用提供的相关回复。为了这个问题,假设我们拥有运行 jar 所需的最少依赖项。
【问题讨论】:
-
我通常为此使用 SBT。使用
sbt-assembly并利用provided依赖限定符,您最终可以获得相当合理的胖JAR。你认为你可以分享你的构建文件吗?很难理解为什么没有它们你的胖 JAR 构建需要这么长时间。 -
你能解释一下你是如何构建你的 jar 的吗?您在使用 AWS Codebuild 吗?你的项目的架构是什么?你的罐子有多大?
-
我正在使用 gradle 构建我的 jar,并将所有依赖项压缩到其中。
标签: java scala apache-spark gradle amazon-emr