3
Spark Core 與 AWS SDK 相依的 jackson 函式庫版本衝突 (/z/programming)

最近把超舊的 aws sdk 升級後,發現 spark application 跑不了了。

研究後發現在 spark issue tracker 內有人提到相同的症狀 SPARK-8332 的討論有其他專案使用的 jackson 版本不合的問題1

那麼 aws sdk 是為了什麼去升級它呢?因為 ISSUE 4112 有人提出了 jackson 版本太舊了,應該升一下。討論的結果我是看不出有『昇』的必要,特別是升級後竟然還跟其他相當廣泛使用的 project 衝突啊 Orz.

目前,只能先把 aws sdk 內的 jackson 降級到 2.4.x 版,至少是二者看起來都能跑的版本。

dependencies {
    compile ('com.amazonaws:aws-java-sdk-s3:1.+') {
        exclude group: 'com.fasterxml.jackson.core', module:'jackson-databind'
    }
    compile 'org.apache.spark:spark-core_2.10:1.5.0'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.4.4'
}
IngramChen 積分 0

這種問題,java 9 的 module 可不可能解決?讓 vm 裡同時用兩個不同版本,相同的程式... ?

qrtt1 積分 1

以我的應用情況來說是可以接受的,因為另外引用 s3 sdk 是為了要縮小路徑範圍。因為我們是每 1 個月,分 1 個路徑存 log,而實際計算的時候,可能只會用到近 1 週、近幾天、近幾個小時。

若不這樣子做,那 spark 大部分的計算在跳過那堆沒用到的資料。而 spark 的計算只是接受這堆選過個別檔案的路徑,而非 1 個巨大的 log 目錄。所以在我的應用情況它們不需要同時存在。