【问题标题】:Using Jackson 2.9.9 in java Spark在 java Spark 中使用 Jackson 2.9.9
【发布时间】:2019-12-22 11:50:08
【问题描述】:

我正在尝试使用 MLLIB 库 (java),但我的一个依赖项使用 Jackson 2.9.9。我注意到提出了一个拉取请求,以便将主分支的依赖项升级到这个特定版本。现在我想使用这个主分支,所以我使用./dev/make-distribution.sh 克隆并安装了这个包。但不确定要将哪些 jar 包复制到我的项目中。我试图复制所有 3.0.0 快照,但我的 java 程序中最终得到了 class file for scala.Cloneable not found

我还做了一个./build/mvn -DskipTests install,它在 ~/.m2 下安装了 SNAPSHOT 依赖项。

我将它们添加到 gradle 构建文件中

    // https://mvnrepository.com/artifact/org.apache.spark/spark-core
    compile group: 'org.apache.spark', name: 'spark-core_2.12', version: '3.0.0-SNAPSHOT'

    // https://mvnrepository.com/artifact/org.apache.spark/spark-mllib
    compile group: 'org.apache.spark', name: 'spark-mllib_2.12', version: '3.0.0-SNAPSHOT'

但在 java 11 下执行时,它会抱怨:

Exception in thread "main" java.lang.NoSuchFieldError: JAVA_9
    at org.apache.spark.storage.StorageUtils$.<init>(StorageUtils.scala:207)

由于 java 9 不再可用,我想知道如何进一步调试此问题。我假设至少需要 java 9 但该字段不再存在?

【问题讨论】:

    标签: java apache-spark jackson apache-spark-mllib


    【解决方案1】:

    我注意到在源代码 StorageUtils.scala 中,它正在拉入apache common-lang3 for JAVA_9。您是否检查过 apache common-lang3 是否包含在类路径中?它通过将 commons-lang3-3.9.jar 添加到我的类路径解决了我的问题。

    【讨论】:

    • 作为评论而不是答案会更好
    • 为什么? @alee 提出了一些可行的解决方案。
    • Spark 3 需要 commons-lang3 >= 3.5。添加这个库(并确保你摆脱旧版本)为我解决了从 Spark 2 升级时的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2012-07-05
    • 1970-01-01
    • 2013-03-09
    • 2016-05-02
    相关资源
    最近更新 更多