2

使用 Druid Tranquility 运行 spark 作业时出现以下错误。

java.lang.NoSuchFieldError: WRITE_DURATIONS_AS_TIMESTAMPS

Druid Tranquility 使用的 jackson-databind (2.6.1) 版本比 spark 捆绑的版本更高。我正在使用 Druid Tranquility(0.6.4) 和 Spark(1.5.2) 的最新稳定版本。

如何解决这个问题?

  1. 强制 spark 使用作业提供的类,而不是 spark 中捆绑的类。如何?
  2. 用新版本的jackson-databind编译spark
  3. 强制宁静使用旧版本。(似乎不起作用,试图在 sbt 中排除)
  4. 还有什么办法吗?
4

3 回答 3

2
  1. 您可以强制 Spark 使用作业中提供的类 usingspark.driver.extraClassPathspark.executor.extraClassPath配置选项,这会将您在此处指定的任何内容分别添加到 Spark 驱动程序或 Spark 执行程序的类路径中。

  2. 您可以尝试针对较新版本的jackson-databind. 为此,请更新fasterxml.jackson.versionSpark 的 pom.xml 文件中的配置参数,然后按照 Spark构建说明进行操作。但不能保证它会成功编译。

  3. 从您的 Tranquility 应用程序中排除 jackson 也可能有效,只需确保排除以下工件:

    com.fasterxml.jackson.core:jackson-core com.fasterxml.jackson.core:jackson-annotations com.fasterxml.jackson.dataformat:jackson-dataformat-smile com.fasterxml.jackson.datatype:jackson-datatype-joda com. fastxml.jackson.core:jackson-databind

sbt dependency-tree您可以通过运行(使用插件)来验证是否排除了这些工件。

我会先尝试(3)然后(2)和(1)。

于 2015-12-24T05:47:05.010 回答
0

Gian 提出了一个拉取请求https://github.com/druid-io/tranquility/pull/81降级 Jackson 以匹配 Druid 中的版本。并宣布下个版本的安宁将拥有它。

于 2016-01-09T13:46:41.390 回答
0

在 spark-submit 中添加 --jars hibernate-validator-5.1.3.Final.jar,这可能会有所帮助

于 2019-02-09T12:13:19.413 回答