Scala Spark如何从打包的jar中选择类

Scala Spark如何从打包的jar中选择类,scala,apache-spark,sbt,spark-packages,Scala,Apache Spark,Sbt,Spark Packages,我正在使用sbt组装插件创建一个胖罐子。我需要一些JAR,它们是默认hadoop/spark的一部分,但具有更新的版本 我希望spark worker jvm更喜欢与我的fat jar文件打包在一起的版本,而不是默认的hadoop/spark发行版。如何执行此操作?解决方案是在提交spark应用程序时,在配置中设置spark.{driver,executor}.userClassPathFirst(--conf选项)。这将首先包括来自uber jar的jar,然后是来自spark类路径的jar

我正在使用sbt组装插件创建一个胖罐子。我需要一些JAR,它们是默认hadoop/spark的一部分,但具有更新的版本


我希望spark worker jvm更喜欢与我的fat jar文件打包在一起的版本,而不是默认的hadoop/spark发行版。如何执行此操作?

解决方案是在提交spark应用程序时,在配置中设置spark.{driver,executor}.userClassPathFirst(--conf选项)。这将首先包括来自uber jar的jar,然后是来自spark类路径的jar


另一种解决方案是在sbt组件中使用着色。并对spark附带的uber jar的早期版本中的jar进行着色。

您确定uber jar中有较旧的类吗?你想用旧版本替换Spark的哪一部分?对不起,我在提出这个问题时犯了一个错误。我需要更新的罐子,但是spark有旧的版本。现在,当我们提交spark作业时,jvm包括spark和hadoop中的jar,然后是fat jar中的jar。但是,因为spark已经包含了这些罐子的旧版本,所以我在胖罐子中添加的新版本被丢弃了。我希望spark使用这些新版本,并丢弃来自默认spark/hadoop发行版的任何冲突JAR。简言之,我想使用稍后在类路径中添加的jar。您希望替换Spark的哪一部分?我们在说什么罐子?