2016-05-12 55 views
0

我在我的本地机器上运行pyspark,我想限制我不使用的核心数量和使用的内存(我有8个核心和16GB内存)如何限制pyspark ressources

知道如何做到这一点,我试图将这些行添加到我的代码中,但是这个过程仍然很贪婪。

from pyspark import SparkContext, SparkConf 

conf = (SparkConf().setMaster("local[4]") 
    .set("spark.executor.cores", "4") 
    .set("spark.cores.max", "4") 
    .set('spark.executor.memory', '6g') 
) 

sc = SparkContext(conf=conf) 
rdd = sc.parallelize(input_data, numSlices=4) 

map_result = rdd.map(map_func) 
map_result.reduce(reduce_func) 

为什么不应用conf?

回答

0

由于配置中的“优先”,这可能会发生。由于Spark允许不同的方式来设置配置参数。在我们可以看到的文档中:

指定为标志或属性文件中的任何值都将传递到应用程序并与通过SparkConf指定的值合并。直接在SparkConf上设置的属性具有最高的优先级,然后将标志传递给spark-submit或spark-shell,然后将其传递给spark-defaults.conf文件中的选项。自早期版本的Spark以来,一些配置键已被重命名;在这种情况下,旧键名仍然可以接受,但优先级低于新键的任何实例。

欲了解更多信息:Spark Documentation

所以我建议审查火花提交的参数和配置文件。

希望它有帮助。