我正在尝试通过命令行创建EMR群集,并为其提供一些引导操作和配置文件。
目标是设置一些SPARK
/ Yarn
变量,以及一些其他应在群集中使用的环境变量(因此,这些环境变量应在主服务器和从属服务器上可用)。
我正在给它一个配置文件,如下所示:
[
{
"Classification": "yarn-env",
"Properties": {},
"Configurations": [
{
"Classification": "export",
"Properties": {
"appMasterEnv.SOME_VAR": "123",
"nodemanager.vmem-check-enabled": "false",
"executor.memoryOverhead": "5g"
},
"Configurations": [
]
}
]
},
{
"Classification": "spark-env",
"Properties": {},
"Configurations": [
{
"Classification": "export",
"Properties": {
"appMasterEnv.SOME_VAR": "123",
"PYSPARK_DRIVER_PYTHON": "python36",
"PYSPARK_PYTHON": "python36",
"driver.memoryOverhead": "14g",
"driver.memory": "14g",
"executor.memory": "14g"
},
"Configurations": [
]
}
]
}
]
但是,当我尝试向集群添加一些步骤时,该步骤失败,因为它不知道环境变量SOME_VAR
。
Traceback (most recent call last):
File "..", line 9, in <module>.
..
raise EnvironmentError
OSError
(行号是我尝试使用环境var SOME_VAR
的地方)
我对SOME_VAR
和其他Spark
/ Yarn
变量使用正确的方法吗?
谢谢
答案 0 :(得分:0)
按照lenin的建议,删除appMasterEnv.SOME_VAR前面的appMasterEnv。
使用分类yarn-env将环境变量传递到工作节点。
使用分类spark-env通过部署模式客户端将环境变量传递给驱动程序。使用部署模式集群时,请使用yarn-env。