您不應在引導操作中更改Spark配置。相反,您應該在啓動羣集時需要添加的特殊json
文件中指定對spark-defaults
所做的任何更改。如果使用cli
推出,命令應該是這個樣子:
aws --profile MY_PROFILE emr create-cluster \
--release-label emr-4.6.0 \
--applications Name=Spark Name=Ganglia Name=Zeppelin-Sandbox \
--name "Name of my cluster" \
--configurations file:///path/to/my/emr-configuration.json \
...
--bootstrap-actions ....
--step ...
在emr-configuration.json
文件,那麼您將更改spark-defaults
。一個示例可能是:
[
{
"Classification": "capacity-scheduler",
"Properties": {
"yarn.scheduler.capacity.resource-calculator": "org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"
}
},
{
"Classification": "spark",
"Properties": {
"maximizeResourceAllocation": "true"
}
},
{
"Classification": "spark-defaults",
"Properties": {
"spark.dynamicAllocation.enabled": "true",
"spark.executor.cores":"7"
}
}
]
不幸的是,EMR JSON配置並未兌現所有的火花配置選項。如果您需要更改諸如spark.driver.extraClassPath或spark.executor.extraClassPath之類的內容,則JSON不允許您這樣做。你如何改變這些選項而不使用引導操作? – Drahkar
@Drahkar我不知道spark.xx.extraClassPath不能通過配置文件設置,但我認爲你仍然可以指定它們作爲你的步驟的選項,如'--steps Name = MyJob,Type = Spark,Args = [ - 主,紗的客戶端, - CONF,spark.driver.extraClassPath = /額外/類/路徑/ ...]'?? –