-
在尝试运行一段使用
sbt assembly
构建的一些FAT JARs
(共享一些共同submodules
(的代码时,我遇到了这个讨厌的java.lang.NoSuchMethodError
-
JAR
建立在EMR
本身(而不是从其他环境上传(,因此库/Spark
/Scala
等中的版本冲突不太可能
我的EMR
环境:
- 版本标签: EMR-5.11.0
- Hadoop发行版:亚马逊2.7.3 应用: 火花 2.2.1, 齐柏林飞艇 0.7.3,
- 神经节 3.7.2, 蜂巢 2.3.2, 李维 0.4.0, Sqoop 1.4.6, Presto 0.187
项目配置:
- 斯卡拉 2.11.11
- 火花 2.2.1
- SBT 1.0.3
事实证明,真正的罪魁祸首是那些jars
中的共享submodules
。
由包含共同submodules
的项目建造的两个fat jars
导致了这场冲突。删除其中一个jars
解决了问题。
我不确定这种冲突是否只发生在某些特定情况下,或者总是会在Zeppelin interpreter
上传此类jars
(具有相同的submodules
(时发生,因此仍在等待适当的解释。