[英]Cannot write to Druid through SparkStreaming and 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.driver.extraClassPath
和spark.executor.extraClassPath
配置選項強制 Spark 使用作業提供的類,這將分別將您在那里指定的任何內容添加到 Spark 驅動程序或 Spark 執行程序的類路徑中。
您可以嘗試針對較新版本的jackson-databind
編譯 Spark。 為此,請更新 Spark 的 pom.xml 文件中的fasterxml.jackson.version
配置參數,然后按照 Spark 構建說明進行操作。 但不能保證它會成功編譯。
從您的 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.