Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 忽略Spark群集自己的jar_Apache Spark - Fatal编程技术网

Apache spark 忽略Spark群集自己的jar

Apache spark 忽略Spark群集自己的jar,apache-spark,Apache Spark,我想使用我自己的应用程序火花罐。更具体地说,我有一个尚未发布的mllib罐,其中包含一个固定的对分Kmeans错误。所以,我的想法是在我的spark集群中使用它(在本地,它工作得非常好) 我尝试过很多东西:extraclasspath、userClassPathFirst、jars选项……许多不起作用的选项。我的最后一个想法是使用sbt的着色规则将所有org.apache.spark.*包更改为shadespark.*但在部署时,它仍然使用集群的spark jar 有什么想法吗?您可以尝试使用M

我想使用我自己的应用程序火花罐。更具体地说,我有一个尚未发布的mllib罐,其中包含一个固定的对分Kmeans错误。所以,我的想法是在我的spark集群中使用它(在本地,它工作得非常好)

我尝试过很多东西:extraclasspath、userClassPathFirst、jars选项……许多不起作用的选项。我的最后一个想法是使用sbt的着色规则将所有org.apache.spark.*包更改为shadespark.*但在部署时,它仍然使用集群的spark jar


有什么想法吗?

您可以尝试使用Maven shade插件重新定位冲突包。这将为新版本的mllib jar创建一个单独的名称空间。因此旧版本和新版本都将在类路径上,但是由于新版本有一个替代名称,您可以显式地引用新的包

看看:

如果uber JAR被重用为其他项目的依赖项,那么直接将工件依赖项中的类包含在uber JAR中可能会由于类路径上的重复类而导致类加载冲突。为了解决这个问题,可以重新定位着色工件中包含的类,以便创建其字节码的私有副本:


我从“编写Spark应用程序时的五大错误”视频中得到了这个想法:

Grover或Malaska视频的哪一部分谈到了着色插件?我尝试了这个解决方案,似乎奏效了,每个包都重命名了,但仍然使用了Spark罐子。一个临时的解决方案是替换Spark的mllib jar(在jars文件夹中)并使用一个更新的,它成功了