Tag: sparklyr

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

我正在使用Sparklyr在具有244GB RAM的虚拟机上以本地模式运行Spark应用程序。 在我的代码中,我使用spark_read_csv()从一个文件夹读取~50MB的csvs,然后从第二个文件夹读取~1.5GB的csvs。 我的问题是,当尝试读取第二个文件夹时,应用程序会抛出错误。 据我了解,问题是驱动程序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 Executor内存 )。 我以为我可以通过在sparklyr.shell.driver-memory添加sparklyr.shell.driver-memory选项来复制上面的bin/spark-submit命令; 如Sparklyr文档中所述; sparklyr.shell* options是传递给spark-submit命令行参数,即添加sparklyr.shell.driver-memory: 5G到config.yml文件应该相当于运行bin/spark-submit –driver-memory 5G 。 我现在已经尝试了上述所有选项,但它们都没有更改Spark应用程序中的驱动程序内存(我通过查看Spark UI的’Executors’选项卡进行检查)。 那么如何通过Sparklyr在本地模式下运行Spark时更改驱动程序内存?