Spark + Druid Tranquility - 库版本冲突
Spark + Druid Tranquility - library version conflict
当我使用 Druid Tranquility 运行 spark 作业时出现以下错误。
java.lang.NoSuchFieldError: WRITE_DURATIONS_AS_TIMESTAMPS
Druid Tranquility 使用比 spark 中捆绑的更高版本的 jackson-databind (2.6.1)。
我正在使用 Druid Tranquility(0.6.4) 和 Spark(1.5.2) 的最新稳定版本。
如何解决?
- 强制 spark 使用作业提供的 类 而不是 spark 中捆绑的 类。怎么样?
- 使用新版本的 jackson-databind 编译 spark
- 强制 Tranquility 使用旧版本。 (似乎不起作用,试图在 sbt 中排除)
- 还有其他方法吗?
您可以使用 spark.driver.extraClassPath
和 spark.executor.extraClassPath
配置选项强制 Spark 使用随作业提供的 类,这会将您在此处指定的任何内容添加到类路径中分别是 Spark 驱动程序或 Spark 执行程序。
您可以尝试针对较新版本的 jackson-databind
编译 Spark。为此,请更新 Spark pom.xml 文件中的 fasterxml.jackson.version
配置参数,然后按照 Spark build instructions 进行操作。但不能保证它会编译成功。
从您的 Tranquility 应用程序中排除 jackson 也可能有效,只需确保排除以下工件:
com.fasterxml.jackson.core:杰克逊核心
com.fasterxml.jackson.core:杰克逊注释
com.fasterxml.jackson.dataformat:jackson-dataformat-smile
com.fasterxml.jackson.datatype:jackson-datatype-joda
com.fasterxml.jackson.core:jackson-databind
您可以验证 运行 sbt dependency-tree
(使用 this 插件)排除了这些工件。
我会先尝试 (3),然后 (2) 和 (1)。
Gian 已提出拉取请求 https://github.com/druid-io/tranquility/pull/81 并降级 Jackson 以匹配 Druid 中的版本。
并宣布下个版本的宁静会有它。
在 spark-submit 中添加 --jars hibernate-validator-5.1.3.Final.jar,这可能会有所帮助
当我使用 Druid Tranquility 运行 spark 作业时出现以下错误。
java.lang.NoSuchFieldError: WRITE_DURATIONS_AS_TIMESTAMPS
Druid Tranquility 使用比 spark 中捆绑的更高版本的 jackson-databind (2.6.1)。 我正在使用 Druid Tranquility(0.6.4) 和 Spark(1.5.2) 的最新稳定版本。
如何解决?
- 强制 spark 使用作业提供的 类 而不是 spark 中捆绑的 类。怎么样?
- 使用新版本的 jackson-databind 编译 spark
- 强制 Tranquility 使用旧版本。 (似乎不起作用,试图在 sbt 中排除)
- 还有其他方法吗?
您可以使用
spark.driver.extraClassPath
和spark.executor.extraClassPath
配置选项强制 Spark 使用随作业提供的 类,这会将您在此处指定的任何内容添加到类路径中分别是 Spark 驱动程序或 Spark 执行程序。您可以尝试针对较新版本的
jackson-databind
编译 Spark。为此,请更新 Spark pom.xml 文件中的fasterxml.jackson.version
配置参数,然后按照 Spark build instructions 进行操作。但不能保证它会编译成功。从您的 Tranquility 应用程序中排除 jackson 也可能有效,只需确保排除以下工件:
com.fasterxml.jackson.core:杰克逊核心 com.fasterxml.jackson.core:杰克逊注释 com.fasterxml.jackson.dataformat:jackson-dataformat-smile com.fasterxml.jackson.datatype:jackson-datatype-joda com.fasterxml.jackson.core:jackson-databind
您可以验证 运行 sbt dependency-tree
(使用 this 插件)排除了这些工件。
我会先尝试 (3),然后 (2) 和 (1)。
Gian 已提出拉取请求 https://github.com/druid-io/tranquility/pull/81 并降级 Jackson 以匹配 Druid 中的版本。 并宣布下个版本的宁静会有它。
在 spark-submit 中添加 --jars hibernate-validator-5.1.3.Final.jar,这可能会有所帮助