离线开发提供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节点其它设置中“执行”选择为Python时,支持使用用户自定义输入参数,用法如下:

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

Python - 图4

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 - 图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