2016-12-16 69 views
0

我们的应用程序的hadoop集群已安装spark 1.5。但由于具体的要求,我们已经开发了2.0.2版的spark工作。当我将作业提交到yarn时,我使用--jars命令覆盖集群中的spark库。但仍然没有选择Scala库jar。它会抛出一个错误,说覆盖spark中的spark库提交

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) 

有关如何在火花提交期间覆盖集群库的任何想法?

我用来提交作业的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> 

回答

0

做法很简单 - 纱线不关心你正在运行的星火的版本,它会执行由纱线客户端是由火花打包提交所提供的罐子。该过程将你的应用程序jar打包在spark libs中。

为了部署Spark 2.0而不是提供的1.5,您只需要在开始工作的主机上安装spark 2.0,例如在你的home目录中,设置YARN_CONF_DIR env vars指向你的hadoop conf,然后使用spark-submit。