驱动程序的内存大小

驱动程序的内存大小

为了编写一个独立的脚本,我想直接从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 ...

但是,当从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 ...

我知道的唯一解决方案是在spark.driver.memory中设置sparks-default.conf,这是不令人满意的。
正如this post中所解释的,Java/Scala在启动JVM之后不能改变驱动程序的内存大小是有意义的。
在导入pyspark模块之前或导入时,是否有任何方法可以从python动态配置它?

最佳答案

使用conf没有任何意义。
尝试将此前导码添加到代码中:

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

08-28 13:20