Python
离线开发提供Python节点,支持直接编写Python代码。目前支持直接使用Python、PySpark 2种方式执行。
代码编辑器
在代码编辑器中可进行python代码的编写,支持python语法提示和语法高亮功能。
使用python节点进行开发时,可以使用azkaban机器上默认部署的python环境,也支持安装多个python环境,在python节点上选择所要使用的具体环境即可。若需安装自定义python环境,需要提前联系运维人员进行相关操作。
如下图,为Python节点,其他设置的页面,这里选择的是Python执行:
如下图,为Python节点,其他设置的页面,这里选择的是PySpark执行:
其中,其它设置中关于Python执行和环境等的默认设置,可在离线开发配置中设置。
参数使用
Python节点其它设置中“执行”选择为Python时,支持使用用户自定义输入参数,用法如下:
azprops是python任务运行时由系统注入的配置字典,内部包含了节点/任务所添加的输入参数、参数组、资源组以及系统参数(系统参数包括事件参数、任务关键字等内容);用户使用脚本时,需要通过 azprops['key']方式获取,例如 azprops['azkaban.flow.1.days.ago’];
Python节点其它设置中“执行”选择为PyPython时,不支持直接在PySpark的脚本中直接使用自定义输入参数。
如果需要使用,则需要按spark的 spark conf 形式来传递。 在自定义参数中增加 conf.spark.key1=value1。conf.spark.xxx 的自定义配置会被当成 --conf spark.xxx=xx 拼接在 spark提交命令行中。 在Spark程序中,通过当前SparkSession中的 SparkConf,获取 spark.key1的值。
节点输出参数用法
Python节点其它设置中“执行”选择为Python时,可以通过如下方法使用上游节点的输出参数,如下图所示:
1)输入参数中,引用上游的输出参数,比如outputs1;
2)添加自定义参数,设置key1=${outputs1[0][0]}(这里key1是你需要使用的参数名称,可以自定义,outputs1[0][0]表示上游输出参数的第一行第一列,也可以按需修改);
3)在python代码中,使用azprops['key1’],来获取数据。
Python 代码检查配置
为避免出现未知异常,当在平台上运行python脚本时,系统会默认禁用部分模块。若需新增或关闭相关规则,需联系运维人员进行处理。
预置规则列表
默认禁用的函数列表如下:
规则名称 | 禁用模块的正则表达式 |
---|---|
不允许用户导入sys模块 | import\s+sys from\s+sys\s+import\s+. |
不允许用户导入os模块 | import\s+os from\s+os\s+import\s+. |
不允许用户私自开启进程 | import\s+multiprocessing from\s+multiprocessing\s+import\s+. import\s+subprocess from\s+subprocess\s+import\s+. |
不允许用户导入numpy包 | from\s+numpy\s+import\s+.* |
禁止用户stop sparkContext | sc\.stop |
以上内容对您是否有帮助?