Ale*_*ord 27 apache-spark pyspark
我正在尝试使用Spark构建一个推荐程序,但内存不足:
Exception in thread "dag-scheduler-event-loop" java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)
我想通过spark.executor.memory在运行时修改PySpark中的属性来增加Spark可用的内存.
那可能吗?如果是这样,怎么样?
更新
受@ zero323注释中链接的启发,我试图在PySpark中删除并重新创建上下文:
del sc
from pyspark import SparkConf, SparkContext
conf = (SparkConf().setMaster("http://hadoop01.woolford.io:7077").setAppName("recommender").set("spark.executor.memory", "2g"))
sc = SparkContext(conf = conf)
Run Code Online (Sandbox Code Playgroud)
回:
ValueError: Cannot run multiple SparkContexts at once;
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为:
>>> sc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sc' is not defined
Run Code Online (Sandbox Code Playgroud)
abb*_*obh 38
当我需要重新启动shell并使用不同的命令打开时,我不确定为什么你选择上面的答案!虽然这有用并且很有用,但是有一个实际上被请求的内联解决方案.这基本上是上面评论中引用的@ zero323,但链接导致描述Scala中的实现.以下是专门针对PySpark的工作实现.
注意:您要修改设置的SparkContext必须尚未启动,否则您需要关闭它,修改设置并重新打开.
from pyspark import SparkContext
SparkContext.setSystemProperty('spark.executor.memory', '2g')
sc = SparkContext("local", "App Name")
Run Code Online (Sandbox Code Playgroud)
来源:https: //spark.apache.org/docs/0.8.1/python-programming-guide.html
ps如果你需要关闭SparkContext只需使用:
SparkContext.stop(sc)
Run Code Online (Sandbox Code Playgroud)
并仔细检查您可以使用的已设置的当前设置:
sc._conf.getAll()
Run Code Online (Sandbox Code Playgroud)
Ha *_*ham 35
您可以spark.executor.memory在开始时设置pyspark-shell
pyspark --num-executors 5 --driver-memory 2g --executor-memory 2g
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31633 次 |
| 最近记录: |