离线开发提供Python节点,支持直接编写Python代码。目前支持直接使用Python、PySpark 2种方式执行。

代码编辑器


代码编辑器中可进行python代码的编写,支持python语法提示和语法高亮功能。

使用python节点进行开发时,可以使用azkaban机器上默认部署的python环境,也支持安装多个python环境,在python节点上选择所要使用的具体环境即可。若需安装自定义python环境,需要提前联系运维人员进行相关操作。

如下图,为Python节点,其他设置的页面,这里选择的是Python执行: Python节点 - 图1

如下图,为Python节点,其他设置的页面,这里选择的是PySpark执行: Python节点 - 图2

其中,其它设置中关于Python执行和环境等的默认设置,可在离线开发配置中设置。 Python节点 - 图3

参数使用

Python节点支持使用用户自定义输入参数,用法如下:
azprops是python任务运行时由系统注入的配置字典,内部包含了节点/任务所添加的输入参数、参数组、资源组以及系统参数(系统参数包括事件参数、任务关键字等内容);用户使用脚本时,需要通过 azprops['key']方式获取,例如 azprops['azkaban.flow.1.days.ago’];
Python节点 - 图4

节点输出参数

python节点不支持直接使用${outputs1[0][0]}来获得上游输出参数中指定某行某列的数据。若需使用,则除了添加上游节点输出参数外,还需要额外添加自定义参数
示例:若上游输出参数为output1,则需要额外添加自定义参数key1,并设置其参数取值为“${outputs1[0][0]}”,表示取上游输入参数output1的查询结果中第1行第1列数据。 Python节点 - 图5

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