pyspark - EMR 集群引导 + 集群设置环境变量
问题描述
我正在尝试创建一个 EMR 集群(通过命令行)并为其提供一些引导操作和配置文件。
目的是设置一些SPARK
/ Yarn
vars 和一些其他应该在集群中使用的环境变量(因此这些环境变量应该在主服务器和从服务器上可用)。
我给它一个如下所示的配置文件:
[
{
"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
vars 做这件事?
谢谢
解决方案
按照用户 lenin 的建议,删除 appMasterEnv.SOME_VAR 前面的 appMasterEnv。
使用分类 yarn-env 将环境变量传递给工作节点。
使用分类 spark-env 将环境变量传递给驱动程序,使用部署模式客户端。使用部署模式集群时,使用 yarn-env。
推荐阅读
- java - 如何修复 ImageView 引起的 java.lang.OutOfMemoryError?
- python-3.6 - Asyncio RuntimeError:事件循环已关闭烧瓶应用程序
- php - 为什么这会遍历 mysqli_fetch_assoc 中的每个 id?
- maven - 无法运行 Spring Boot 应用程序它退出说尝试调用不存在的方法
- logic - 将简单的 if/else 转换为表达式?
- ios - 如何为 ios 应用程序安装 fishhook.c 反应本机库
- django - Django REST Framework Deep Dive - 它在哪里确定一个 enpoint 需要一个身份验证令牌
- python-3.x - MatplotlibDeprecationWarning 与 Pyinstaller .exe
- javascript - 使用引用者的子域作为 href 链接
- javascript - 如何在可水平滚动的表格中看到可见的垂直溢出?