我们的应用程序的hadoop集群已经安装了spark1.5。但由于特定的要求,我们开发了版本2.0.2的spark作业。当我将作业提交给yarn时,我使用--jars命令覆盖集群中的spark库。但它仍然没有选择scala库jar。它抛出了一个错误
ApplicationMaster: User class threw exception: java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
at org.apache.spark.sql.SparkSession$Builder.config(SparkSession.scala:713)
at org.apache.spark.sql.SparkSession$Builder.appName(SparkSession.scala:704)
关于如何在spark提交期间重写集群库有什么想法吗?
下面是我用来提交作业的shell命令。
spark-submit \
--jars test.jar,spark-core_2.11-2.0.2.jar,spark-sql_2.11-2.0.2.jar,spark-catalyst_2.11-2.0.2.jar,scala-library-2.11.0.jar \
--class Application \
--master yarn \
--deploy-mode cluster \
--queue xxx \
xxx.jar \
<params>
1条答案
按热度按时间wswtfjt71#
这是相当容易的-纱不关心哪一个版本的spark你正在运行,它将执行由纱客户机提供,这是由spark提交打包。这个过程将应用程序jar打包到spark libs中。
为了部署spark2.0而不是提供的1.5,您只需要在开始工作的主机上安装spark2.0,例如在home dir中,将yarn\u conf\u dir env vars设置为指向hadoop conf,然后使用sparksubmit。