INFO-平台Shell、Python、Pyspark脚本引用变量方式
更新时间: 2025-12-01 14:07:52
阅读 32
INFO-平台Shell、Python脚本引用变量方式
功能说明
平台Shell、Python、Pyspark脚本引用变量的方式
PySpark、Python和Shell脚本在开发时替换变量没加限制,使用${}引用EasyData系统参数会被替换掉,但${}是脚本的语法,该替换逻辑会导致参数被误替换。因此,在8.0 Update09内修复了该漏洞,不会对${}做参数替换。具体说明及示例
一、Python任务
针对Python任务,Azkaban会把节点参数、参数组参数、调度参数等信息注入到Python脚本的azprops字典中,代码中可以通过azprops字典获取。
二、Pyspark任务
对于PySpark任务,需要通过节点参数来中转实现,EasyData调度系统会将节点参数中conf.开头的参数以配置形式传给Spark,脚本中从Spark的配置中读取该值。azkaban 会把 conf.spark.aaa=bbb 的参数形式转换成spark参数 --conf spark.aaa=bbb 传递到spark应用中。
azkaban 会把 py-files=xxxx,xxxxx 的参数形式转换成 spark 参数 --py-files=xxxx,xxxxx 传递到 spark 应用中。eg:

三、Shell任务
对于Shell任务,需要通过节点参数来中转实现,EasyData调度系统会将节点参数中env.开头的参数export到任务的环境变量中,Shell脚本中读取该环境变量实现。(1)在节点参数中增加配置,配置key需要以env.开头,比如env.A_B,配置值为原来脚本中引用的参数,比如${azkaban.flow.1.days.ago}。注意,因为环境变量命名限制,配置key中只能出现数字、字母和下划线,其他字符不能出现,比如点,A.B就是不合法的。
(2)此外,如果是在IDE中运行,该参数需要配置到“运行设置“的“输入参数”中,如果是在开发模式立即运行或者线上调度运行,该参数需要配置到“其他设置”的“输入参数”中。
(3)在Shell任务中引用配置,需要去掉env.前缀,上面的配置就可以写成${A_B}。eg:


作者:曹俊
文档反馈
以上内容对您是否有帮助?