EMR集群引导+集群设置环境变量

时间:2018-11-30 10:21:05

标签: pyspark yarn amazon-emr

我正在尝试通过命令行创建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变量使用正确的方法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

按照lenin的建议,删除appMasterEnv.SOME_VAR前面的appMasterEnv。

使用分类yarn-env将环境变量传递到工作节点。

使用分类spark-env通过部署模式客户端将环境变量传递给驱动程序。使用部署模式集群时,请使用yarn-env。