【问题标题】:Setting PySpark executor.memory and executor.core within Jupyter Notebook在 Jupyter Notebook 中设置 PySpark executor.memory 和 executor.core
【发布时间】:2019-01-07 03:32:26
【问题描述】:

我在 Jupyter Notebook 中初始化 PySpark,如下所示:

from pyspark import SparkContext
#
conf = SparkConf().setAppName("PySpark-testing-app").setMaster("yarn")
conf = (conf.set("deploy-mode","client")
       .set("spark.driver.memory","20g")
       .set("spark.executor.memory","20g")
       .set("spark.driver.cores","4")
       .set("spark.num.executors","6")
       .set("spark.executor.cores","4"))

sc = SparkContext(conf=conf)
sqlContext = SQLContext.getOrCreate(sc)

但是,当我启动 YARN GUI 并查看“正在运行的应用程序”时,我看到我的会话被分配了 1 个容器、1 个 vCPU 和 1GB 的 RAM,即默认值! 我可以获得上面列出的所需的传递值吗?

【问题讨论】:

    标签: apache-spark pyspark jupyter-notebook


    【解决方案1】:

    Jupyter notebook 将以 yarn-client 模式启动 pyspark,驱动程序内存和某些配置无法使用 class 'sparkConf' 进行设置。你必须在命令行中设置它。

    看看官方doc对内存设置的解释:

    注意:在客户端模式下,这个配置不能通过SparkConf直接在你的应用程序中设置,因为此时驱动程序JVM已经启动。相反,请通过--driver-memory command 行选项或在您的默认属性文件中进行设置。

    还有另一种方法可以做到。

    import os
    memory = '20g'
    pyspark_submit_args = ' --driver-memory ' + memory + ' pyspark-shell'
    os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
    

    因此,其他配置应采用与上述相同的方式。

    【讨论】:

      【解决方案2】:

      执行

          %%configure -f
      {
          "driverMemory" : "20G",
          "executorMemory": "20G"
      }
      

      在所有单元格的顶部(在 Spark 初始化之前)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多