我正在经历这个Apache Spark documentation,它提到:
在
cluster
模式下在YARN上运行Spark时,环境变量 需要使用 您的spark.yarn.appMasterEnv.[EnvironmentVariableName]
财产conf/spark-defaults.conf
档案。
我正在AWS数据管道上运行我的EMR集群。我想知道我在哪里编辑这个conf文件。另外,如果我创建自己的自定义配置文件,并将其指定为--configurations
的一部分(在spark-submit中),它是否会解决我的用例?
答案 0 :(得分:0)
一种方法是:(棘手的部分是您可能需要在执行器和驱动程序参数上设置环境变量)
spark-submit \
--driver-memory 2g \
--executor-memory 4g \
--conf spark.executor.instances=4 \
--conf spark.driver.extraJavaOptions="-DENV_KEY=ENV_VALUE" \
--conf spark.executor.extraJavaOptions="-DENV_KEY=ENV_VALUE" \
--master yarn \
--deploy-mode cluster\
--class com.industry.class.name \
assembly-jar.jar
我已经在EMR和客户端模式下测试了它,但也应该在集群模式下工作。
答案 1 :(得分:0)
为了将来参考,您可以在使用文档 here 中所述的配置参数创建 EMR 集群时直接传递环境变量。
具体来说,可以通过传递配置 JSON 来修改 spark-defaults
文件,如下所示:
{
'Classification': 'spark-defaults',
'Properties': {
'spark.yarn.appMasterEnv.[EnvironmentVariableName]' = 'some_value',
'spark.executorEnv.[EnvironmentVariableName]': 'some_other_value'
}
},
其中 spark.yarn.appMasterEnv.[EnvironmentVariableName]
将用于在集群模式下使用 YARN (here) 传递变量。和 spark.executorEnv.[EnvironmentVariableName]
将变量传递给执行程序进程 (here)。