2016-05-12 58 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

所以我建議審查火花提交的參數和配置文件。

希望它有幫助。