簡體   English   中英

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) 的最新穩定版本。

如何解決這個問題?

  1. 強制 spark 使用作業提供的類,而不是 spark 中捆綁的類。 如何?
  2. 用新版jackson-databind編譯spark
  3. 強制寧靜使用舊版本。 (似乎不起作用,試圖在 sbt 中排除)
  4. 還有什么辦法嗎?
  1. 您可以使用spark.driver.extraClassPathspark.executor.extraClassPath配置選項強制 Spark 使用作業提供的類,這將分別將您在那里指定的任何內容添加到 Spark 驅動程序或 Spark 執行程序的類路徑中。

  2. 您可以嘗試針對較新版本的jackson-databind編譯 Spark。 為此,請更新 Spark 的 pom.xml 文件中的fasterxml.jackson.version配置參數,然后按照 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)。

Gian 提出了一個拉取請求https://github.com/druid-io/tranquility/pull/81降級 Jackson 以匹配 Druid 中的版本。 並宣布下一個版本的寧靜將擁有它。

在 spark-submit 中添加 --jars hibernate-validator-5.1.3.Final.jar,這可能會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM