我创建了一个使用jackson2.7.5的uberjar。我使用的是spark 1.6.2(因为我使用的是scala-2.10)。然而,每当我尝试提交我的spark作业时,我都会遇到错误,即在jackson的较新版本中的特性开关上找不到任何方法。
我假设uberjar允许我绑定自己的依赖项,即使它们与spark需要运行的东西有冲突,也可以使用某种委托类加载器来隔离冲突。不是这样吗?如果不是,我该怎么解决这个问题?
我知道有这个答案java.lang.nosuchmethoderror jackson databind和spark,它基本上建议使用sparks-jackson而不是你自己的,但是spark的jackson现在已经很老了,我有依赖于新jackson特性的代码
2条答案
按热度按时间az31mfrm1#
您需要对依赖项进行着色,以便两个版本可以共存。您的较新版本路径名将被更改以解决冲突。
如果您使用的是maven:
资料来源:https://cloud.google.com/dataproc/docs/guides/manage-spark-dependencies
bqujaahr2#
如果使用
--conf
spark.driver.extraClassPath
以及spark.executor.extraClassPath
是可能的。请看我的回答。