1

我跑在pyspark Python腳本,並得到了以下錯誤: NameError:名字「火花」是沒有定義如何更改Spark設置以允許spark.dynamicAllocation.enabled?

我看着它,發現原因是spark.dynamicAllocation.enabled不允許呢。

根據Spark的文檔(https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-dynamic-allocation.html#spark_dynamicAllocation_enabled):spark.dynamicAllocation.enabled(默認值:false)控制是否啓用動態分配。假定spark.executor.instances未設置或爲0(這是默認值)。

由於默認設置是false,我需要更改Spark設置以啓用spark.dynamicAllocation.enabled

我用brew安裝了Spark,並沒有改變它的配置/設置。

如何更改設置並啓用spark.dynamicAllocation.enabled

非常感謝。

+0

上面的鏈接不是spark官方文檔。它掌握的也是SO的使用者Jack的Apache Spark Book。請適當更改:) –

回答

1

有幾個地方可以設置它。如果你想啓用它在每個作業的基礎上,設置在每個應用程序如下:如果你想設置,如果所有作業,導航到spark.conf文件

conf.set("spark.dynamicAllocation.enabled","true") 

。在Hortonworks發行應該

/usr/hdp/current/spark-client/conf/ 

設置添加到您的火花defaults.conf,應該是好去。

+0

非常感謝!我想在每個工作的基礎上啓用它。 conf.set(「spark.dynamicAllocation.enabled」,「true」)是我要在終端輸入的命令行嗎?在我輸入這個命令行之前,應該更改哪個目錄?非常感謝! – mflowww

+0

如果您使用spark-shell從命令行運行,請使用is命令啓動shell: spark-shell --conf spark.dynamicAllocation.enabled = true 無論您在何種目錄下,何時您在com中啓動shell 如果您正在編寫應用程序,請在使用conf.set()創建spark配置後將其設置在應用程序中。 –

+0

非常感謝。我懂了。如果我正在編寫Python腳本並嘗試在命令行中使用spark-submit(不在pyspark外殼中)運行它,那麼我只需將這行代碼包含在我的Python腳本中,對不對? – mflowww

2

你可以像這樣編程。

val conf = new SparkConf() 
     .setMaster("ClusterManager") 
     .setAppName("test-executor-allocation-manager") 
     .set("spark.dynamicAllocation.enabled", "true") 
     .set("spark.dynamicAllocation.minExecutors", 1) 
     .set("spark.dynamicAllocation.maxExecutors", 2) 
     .set("spark.shuffle.service.enabled", "true") // for stand alone 
+0

非常感謝!我應該把你在這裏提供的腳本加入我寫的pyspark嗎?或者這是我應該修改的配置.sh文件的一部分? – mflowww

+0

你必須在你的python程序文件中包含這個以上是scala語法 –

+0

非常感謝。我正在寫Python腳本發送到pyspark。讓我試着修改你在這裏提出的建議,看看它是否有效。 – mflowww

0

這是影響星火安裝中使用其他資源以及,如安裝在Amazon Web Services的火花EC2腳本製作的問題。從火花文檔,在SPARK_HOME/conf目錄/火花defaults.conf兩個值需要設置:

spark.shuffle.service.enabled true 
spark.dynamicAllocation.enabled true 

看到這一點:https://spark.apache.org/docs/latest/configuration.html#dynamic-allocation

如果安裝在SPARK_HOME一個spark-env.sh腳本/ conf,確保它沒有如下所示的行,或者它們被註釋掉:

export SPARK_WORKER_INSTANCES=1 #or some other integer, or 
export SPARK_EXECUTOR_INSTANCES=1 #or some me other integer 
相關問題