当前位置: 首页 > 知识库问答 >
问题:

当通过Sparklyr在本地模式下运行Spark时,我如何配置驱动程序内存?

奚晟
2023-03-14

我正在使用Sparklyr在一个拥有244GB RAM的虚拟机上以本地模式运行一个Spark应用程序。在我的代码中,我使用spark_read_csv()从一个文件夹读取大约50MB的CSV,然后从另一个文件夹读取大约1.5GB的CSV。我的问题是应用程序在尝试读取第二个文件夹时抛出错误。

根据我的理解,问题是驱动程序JVM可用的默认RAM是512MB--对于第二个文件夹来说太小了(在本地模式下,所有操作都在驱动程序JVM中运行,正如这里如何设置Apache Spark Executor内存所描述的。所以我需要将Spark.driver.memory参数增加到更大的值。

问题是我无法通过sparklyr文档中描述的普通方法(即通过spark_config()config.yml文件或spark-defaults.conf文件)设置此参数:

在本地模式下,运行spark-submit时,JVM已经启动了默认内存设置,因此在conf中设置“spark.driver.memory”实际上不会为您做任何事情。相反,您需要运行spark-submit如下所示:

bin/spark-submit --driver-memory 2g --class your.class.here app.jar

(摘自如何设置Apache Spark执行器内存)。

我以为可以通过将sparklyr.shell.driver-memory选项添加到config.yml中来复制上面的bin/spark-submit命令;如Sparklyr文档中所述;sparklyr.shell*选项是传递给spark-submit的命令行参数,即将sparklyr.shell.driver-memory:5G添加到config.yml文件应等同于运行bin/spark-submit--driver-memory5G

我现在已经尝试了上面所有的选项,没有一个会改变Spark应用程序中的驱动程序内存(我通过查看Spark UI的“Executors”选项卡来检查)。

那么如何通过Sparklyr在本地模式下运行Spark时更改驱动程序内存呢?

共有1个答案

楚煜
2023-03-14

感谢@Aydin K的建议。最终,我能够配置驱动程序内存,首先将java更新到64bit(允许在JVM中使用>4G的RAM),然后使用spark_config()对象中的sparklyr.shell*参数

config <- spark_config()
config$`sparklyr.shell.driver-memory` <- '30G'
config$`sparklyr.shell.executor-memory` <- '30G'
sc <- spark_connect(master='local', version='2.0.1', config=config)
 类似资料:
  • 用本地模式运行Spark应用程序,我使用了命令,比如: 在这种情况下,这是否意味着我的应用程序使用了我的本地计算机的所有内存?其他参数,如驱动程序内存和执行程序内存是否还在工作?

  • 问题内容: 可能是一个简单的问题,但我找不到有关此的任何信息。 我曾经以这种方式运行selenium2.x。我启动服务器: 然后运行测试。我使用Dart,所以我这样做 但是现在我正在尝试使用selenium3。我已经下载了它,并用新的jar替换了旧的终端调用,但看来我可以做到。Selenium告诉我它不知道这样的参数“ -Dwebdriver.chrome.driver”。在帮助中,我看不到用于指

  • 我使用的是Spark1.4.0-RC2,这样我就可以将Python3与spark一起使用了。如果我将添加到我的.bashrc文件中,我就可以与Python3交互地运行spark。但是,如果我想在本地模式下运行一个独立程序,我会得到一个错误: 如何为驱动程序指定python的版本?设置不工作。

  • 我正在通过阅读高性能Spark来学习如何配置Spark应用程序,其中提到的一句话让我感到困惑: 根据我的经验,设置Spark驱动程序内存的良好启发式方法只是不会导致驱动程序内存错误的最低可能值,即为执行程序提供最大可能的资源。 我的理解是驱动程序存在于它自己的节点中,而执行程序独立存在于工作节点上。我本以为我可以最大限度地利用驱动程序内存,而不必担心它会影响执行程序。 这本书的建议是真的吗?如果是

  • 需要以静默模式通过spark-shell执行scala脚本。当我使用时,在执行之后,我进入scala交互模式。我不想进去。 我尝试执行spark-shell-i“file.scala”。但我不知道如何在静默模式下执行脚本。 处决后,我

  • null 所以目前一切都在无头模式下工作。但是我需要在一个没有GUI的linux服务器上运行这个python脚本(因此需要headless模式)。出于某种原因,我所有无头运行的尝试都导致selenium web驱动程序在初始化时超时。 以下是回溯: 文件“C:\users\xuser\desktop\bomwebservice\backend\code\firefoxstarter.py”,第51