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