如何在AWS Glue作业中通过Python设置Java环境变量
在AWS Glue Python作业中设置Java环境变量的可行方案
用Glue作业参数直接传JVM参数
到Glue作业的「作业参数」里添加--JOB_ARGS,值填-D<变量名>=<变量值>,比如-Djava.security.egd=file:/dev/./urandom。这是从JVM启动阶段注入参数,能保证参数被JVM加载时就生效,优先级最高。通过SparkContext修改JVM系统属性
在Python脚本开头、初始化GlueContext之前,用SparkContext直接操作JVM:from pyspark.context import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOrCreate() # 设置目标Java环境变量/系统属性 sc._jvm.java.lang.System.setProperty("your.variable.name", "variable_value") glueContext = GlueContext(sc)设置完可以加一行代码验证:
print(sc._jvm.java.lang.System.getProperty("your.variable.name")),确认是否生效。Glue 2.0+版本用环境变量注入
如果用的是Glue 2.0及以上版本,直接在作业配置的「安全配置、脚本库和作业参数」→「环境变量」里添加JAVA_OPTS="-D<变量名>=<变量值>",Glue启动作业时会把这个变量传递给JVM进程。检查变量生效时机
不少Java类库只会在初始化阶段读取环境变量,所以要确保设置代码在调用目标库之前执行,别搞反顺序。
内容的提问来源于stack exchange,提问作者Kiran
相关产品推荐
相关产品推荐

