gpt4 book ai didi

apache-spark - SBT 组装 jar 排除

转载 作者:行者123 更新时间:2023-12-04 00:04:00 26 4
gpt4 key购买 nike

我使用 spark(在 java API 中)并需要一个可以推送到集群的 jar,但是 jar 本身不应该包含 spark。部署作业的应用程序当然应该包括 spark。

我想:

  • sbt run - 一切都应该被编译和执行
  • sbt smallAssembly - 创建一个没有 Spark 的 jar
  • sbt assembly - 创建一个包含所有东西(包括 spark)的 uber jar 以便于部署。

  • 我有 1. 和 3. 工作。关于我如何能 2. 的任何想法我需要将哪些代码添加到我的 build.sbt 文件中?

    该问题不仅与 spark 相关,还与我可能希望排除的任何其他依赖项相关。

    最佳答案

    %“提供”配置

    从 fat jar 子中排除 jar 的第一个选项是使用 "provided"库依赖项上的配置。 "provided"来自 Maven 的 provided范围定义如下:

    This is much like compile, but indicates you expect the JDK or a container to provide the dependency at runtime. For example, when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. This scope is only available on the compilation and test classpath, and is not transitive.



    由于您将代码部署到容器(在本例中为 Spark),因此与您的评论相反,您可能需要 Scala 标准库和其他库 jar(例如,如果您使用它,则为 Dispatch)。这不会影响 runtest .

    包Bin

    如果您只想要源代码,而没有 Scala 标准库或其他库依赖项,那就是 packageBin内置于 sbt。这个打包的 jar 可以与你可以使用 sbt-assembly 的 assemblyPackageDependency 制作的仅依赖的 jar 结合起来。 .

    装配中排除的 jar

    最后一个选项是使用 excludedJars in assembly :
    excludedJars in assembly := {
    val cp = (fullClasspath in assembly).value
    cp filter {_.data.getName == "spark-core_2.9.3-0.8.0-incubating.jar"}
    }

    关于apache-spark - SBT 组装 jar 排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20131854/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com