【问题标题】:How to build Spark Mllib submodule individually如何单独构建 Spark Mllib 子模块
【发布时间】:2016-04-03 22:07:31
【问题描述】:

我在 Spark 中修改了 mllib,想在其他项目中使用自定义的 mllib jar。当我使用以下方法构建火花时它可以工作:

build/mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests clean package

从 Spark 在http://spark.apache.org/docs/latest/building-spark.html#building-submodules-individually 的文档中学习。但是构建整个 Spark 包需要很长时间(在我的桌面上大约需要 7 分钟),所以我想单独构建 mllib。在 Spark 中构建子模块的说明也来自同一个链接,我使用了:

build/mvn -pl :spark-mllib_2.10 clean install

只构建 Mllib 本身。它构建成功,但是,在运行其他使用 mllib 的项目时,我看不到我在 mllib 中所做的更改。虽然这在我从头开始构建整个 Spark 时确实有效,但我想知道我应该如何使用 maven 来单独构建 mllib?

【问题讨论】:

    标签: maven apache-spark build apache-spark-mllib


    【解决方案1】:

    我怀疑编译的 mllib jar 在运行应用程序时并没有真正使用。所以我通过在代码中添加这一行来打印出运行应用程序时修改类的位置:

    logInfo(getClass.getProtectionDomain.getCodeSource.getLocation.getPath)
    

    事实证明,Spark 使用的是 spark-assembly-1.6.0-hadoop2.4.0.jar,并且仍在使用旧的 mllib jar。所以我改为使用以下方法编译 mllib 和程序集:

    build/mvn -DskipTests -pl :spark-mllib_2.10 install
    build/mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests -pl :spark-assembly_2.10 install
    

    这将我机器上的整个编译时间减少到 1 分钟多一点。必须有比这需要更短的增量编译更好的方法,我仍在寻找这样的解决方案。但目前,我将使用此热修复。

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 2015-02-04
      相关资源
      最近更新 更多