【问题标题】:Spark pyspark vs spark-submitSpark pyspark 与 spark-submit
【发布时间】:2021-01-13 15:59:42
【问题描述】:

关于 spark-submit 的文档说明如下:

Spark 的 bin 目录中的 spark-submit 脚本用于启动 集群上的应用程序。

关于 pyspark 它说如下:

您还可以使用 bin/pyspark 启动交互式 Python shell。

这个问题可能听起来很愚蠢,但是当我运行命令时,虽然pyspark 他们也在“集群”上运行,对吧?它们不只在主节点上运行,对吧?

【问题讨论】:

标签: apache-spark pyspark


【解决方案1】:

这两者之间没有实际区别。如果未配置,否则两者都将在本地模式下执行代码。如果 master 被配置(通过--master 命令行参数或spark.master 配置)相应的集群将用于执行程序。

【讨论】:

    【解决方案2】:

    如果您使用的是 EMR ,则需要做三件事

    1. 使用 pyspark(或 spark-shell)
    2. 使用 spark-submit 而不使用 --master 和 --deploy-mode
    3. 使用 spark-submit 并使用 --master 和 --deploy-mode

    虽然使用以上三个都会在spark集群中运行应用程序,但驱动程序的工作方式有所不同。

    • 在第 1 和第 2 中,驱动程序将处于客户端模式,而在第 3 中 驱动程序也将在集群中。
    • 在第 1 和第 2 中,您必须等到一个应用程序完成 运行另一个,但在第三个你可以运行多个应用程序 并行。

    【讨论】:

      【解决方案3】:

      只是添加其他人没有解决的澄清(您可能已经知道这一点,但从您的问题的措辞中不清楚):

      ..当我通过 pyspark 运行命令时,它们也在“集群”上运行,对吗?它们不只在主节点上运行,对吧?

      spark-submit 一样,标准 Python 代码将仅在驱动程序上运行。当您通过各种pyspark API 调用操作时,您将触发将在集群上注册/执行的转换或操作。

      正如其他人所指出的,spark-submit 也可以在集群模式下启动作业。在这种情况下,驱动程序仍然执行标准 Python 代码,但驱动程序与您调用 spark-submit 的机器是不同的机器

      【讨论】:

        【解决方案4】:
        1. Pyspark 与 Scala spark 和 Java Spark 相比有很大的不同,因为 Python spark 中只支持 YARN 来调度集群。

        2. 如果你在本地机器上运行 python spark,那么你可以使用 pyspark。如果在集群中,请使用 spark-submit。

        3. 如果您的 python spark 作业中有任何依赖项,则需要一个 zip 文件进行提交。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多