在PySpark中以编程方式设置驱动程序的内存大小

uds*_*cbt 6 python apache-spark pyspark

为了编写独立脚本,我想直接从Python开始并配置Spark上下文.使用PySpark的脚本我可以设置驱动程序的内存大小:

$ /opt/spark-1.6.1/bin/pyspark
... INFO MemoryStore: MemoryStore started with capacity 511.5 MB ...
$ /opt/spark-1.6.1/bin/pyspark --conf spark.driver.memory=10g
... INFO MemoryStore: MemoryStore started with capacity 7.0 GB ...
Run Code Online (Sandbox Code Playgroud)

但是当从Python模块启动上下文时,无法设置驱动程序的内存大小:

$ export SPARK_HOME=/opt/spark-1.6.1                                                                                                                                                                                                                                                                                                                
$ export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python
$ python
>>> from pyspark import SparkConf, SparkContext
>>> sc = SparkContext(conf=SparkConf().set('spark.driver.memory', '10g'))
... INFO MemoryStore: MemoryStore started with capacity 511.5 MB ...
Run Code Online (Sandbox Code Playgroud)

我所知道的唯一的解决办法是设置spark.driver.memorysparks-default.conf,这是不令人满意的.正如在解释这个职位,这是有道理的Java /斯卡拉不能够能够一旦JVM开始更改驱动程序的内存大小.在导入pyspark模块之前或导入模块时,有没有办法以某种方式从Python动态配置它?

小智 8

正如你所做的那样使用conf是没有意义的.尝试将此序言添加到您的代码中:

memory = '10g'
pyspark_submit_args = ' --driver-memory ' + memory + ' pyspark-shell'
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
Run Code Online (Sandbox Code Playgroud)