Apache spark 忽略Spark群集自己的jar
我想使用我自己的应用程序火花罐。更具体地说,我有一个尚未发布的mllib罐,其中包含一个固定的对分Kmeans错误。所以,我的想法是在我的spark集群中使用它(在本地,它工作得非常好) 我尝试过很多东西:extraclasspath、userClassPathFirst、jars选项……许多不起作用的选项。我的最后一个想法是使用sbt的着色规则将所有org.apache.spark.*包更改为shadespark.*但在部署时,它仍然使用集群的spark jarApache spark 忽略Spark群集自己的jar,apache-spark,Apache Spark,我想使用我自己的应用程序火花罐。更具体地说,我有一个尚未发布的mllib罐,其中包含一个固定的对分Kmeans错误。所以,我的想法是在我的spark集群中使用它(在本地,它工作得非常好) 我尝试过很多东西:extraclasspath、userClassPathFirst、jars选项……许多不起作用的选项。我的最后一个想法是使用sbt的着色规则将所有org.apache.spark.*包更改为shadespark.*但在部署时,它仍然使用集群的spark jar 有什么想法吗?您可以尝试使用M
有什么想法吗?您可以尝试使用Maven shade插件重新定位冲突包。这将为新版本的mllib jar创建一个单独的名称空间。因此旧版本和新版本都将在类路径上,但是由于新版本有一个替代名称,您可以显式地引用新的包 看看: 如果uber JAR被重用为其他项目的依赖项,那么直接将工件依赖项中的类包含在uber JAR中可能会由于类路径上的重复类而导致类加载冲突。为了解决这个问题,可以重新定位着色工件中包含的类,以便创建其字节码的私有副本:
我从“编写Spark应用程序时的五大错误”视频中得到了这个想法:Grover或Malaska视频的哪一部分谈到了着色插件?我尝试了这个解决方案,似乎奏效了,每个包都重命名了,但仍然使用了Spark罐子。一个临时的解决方案是替换Spark的mllib jar(在jars文件夹中)并使用一个更新的,它成功了