Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 带有显式setMaster(“local”)的Spark作业,与纱线一起传递给Spark提交_Apache Spark - Fatal编程技术网

Apache spark 带有显式setMaster(“local”)的Spark作业,与纱线一起传递给Spark提交

Apache spark 带有显式setMaster(“local”)的Spark作业,与纱线一起传递给Spark提交,apache-spark,Apache Spark,如果我使用setMaster(“local”)编译了一个Spark作业(2.2.0),如果我使用Spark submit--master Thread--deploy mode cluster发送该作业,会发生什么 我试过了,看起来这项工作是在纱线集群上完成的,而不是在本地完成的 我不清楚的是: 为什么这样做有效?根据文档,您在SparkConf中设置的内容明显优先于从命令行或通过spark submit传递的内容(请参阅:)。这是不是因为我使用的是SparkSession.getBuilde

如果我使用
setMaster(“local”)
编译了一个Spark作业(2.2.0),如果我使用
Spark submit--master Thread--deploy mode cluster
发送该作业,会发生什么

我试过了,看起来这项工作是在纱线集群上完成的,而不是在本地完成的

我不清楚的是:

  • 为什么这样做有效?根据文档,您在
    SparkConf
    中设置的内容明显优先于从命令行或通过
    spark submit
    传递的内容(请参阅:)。这是不是因为我使用的是
    SparkSession.getBuilder

  • 在代码中保留
    setMaster(“本地”)
    与删除它相比,是否有不太明显的影响?我想知道我看到的是不是集群中以本地模式运行的作业,而不是正确使用集群资源


    • 这是因为在
      SparkConf.setMaster
      之前就向纱线提交了申请

      当您使用
      --master warn--deploy mode cluster
      时,Spark将在本地机器中运行其主要方法,并将jar上载到warn上运行。Thread将分配一个容器作为运行Spark驱动程序(也称为代码)的应用程序主控程序
      SparkConf.setMaster(“local”)
      在纱线容器中运行,然后创建以本地模式运行的SparkContext,而不使用纱线集群资源

      我建议不要在代码中设置master。只需使用命令行
      --master
      master
      env来指定Spark master

      如果我有一个用setMaster(“local”)编译的Spark作业(2.2.0),如果我用Spark submit--master thread--deploy模式集群发送该作业,会发生什么

      setMaster
      具有最高优先级,因此不包括其他选项

      我的建议是:不要用这个(除非你让我相信我错了——觉得有挑战性:)

      这就是为什么我强烈主张尽早并经常使用
      spark submit
      。它默认为
      local[*]
      ,并且工作得很好。在Spark的最新版本中,它甚至得到了改进,添加了一个漂亮的应用程序名(aka
      appName
      ),因此您不必设置它(或者甚至…请不要…硬核)

      鉴于我们正处于Spark 2.2天,Spark SQL是Spark中所有好东西的入口点,您应该始终从
      SparkSession
      开始(忘记
      SparkConf
      SparkContext
      太低级)


      我所知道的在Spark应用程序中何时可以使用
      setMaster
      的唯一原因是您希望在IDE中运行应用程序(例如IntelliJ IDEA)。如果没有
      setMaster
      ,您将无法运行应用程序


      一种解决方法是对源代码(在sbt中)使用
      src/test/scala
      ,并使用一个带有
      setMaster
      的启动器来执行主应用程序。

      谢谢,这就是我想要的答案。听起来这可能会引起混淆:如果Spark在本地模式下运行,在Thread应用程序管理器中,它是否为本地模式并不明显。可以提供一个如何在src/test/scala中使用launcher的示例吗?