离线开发提供Python节点,可以在该节点中直接编辑python代码,并进行python任务的周期调度设置。

代码编辑器


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

说明:使用python节点进行开发时,需要提前联系运维人员在azkaban机器上安装开发所需的python环境。

参数使用

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

节点输出参数

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

Python 代码检查配置

python的代码检查借鉴了linkis的相关设计,关键数据存储在三个表中。具体字段参见表描述。

表名 描述
cluster_exception_msg 代码检查规则对应的报错信息
source_code_check_rule 代码检查规则,正则
source_code_check_rule_interrupt_level 对面检查规则中断执行的默认级别

如何新增规则?

  1. 在 cluster_exception_msg 表中插入对应的异常信息。

    INSERT INTO `cluster_exception_msg` (`code`, `en_msg`, `cn_msg`, `param_num`) values (20100, 'can not use sys module', '不能使用sys模块', 0);
  2. 在 source_code_check_rule 表中插入对应的规则,需要确定 代码类型、规则级别等字段。例如:

    INSERT INTO `source_code_check_rule` (`code_type`, `rule_level`, `check_rule`, `exception_msg_code`) values ('PYTHON',  'ERROR', 'import\\s+sys', 对应异常信息的ID);
  3. 如果表 source_code_check_rule_interrupt_level 中没有对应代码类型的中断级别,需要新增,例如:

    INSERT INTO `source_code_check_rule_interrupt_level` (`code_type`, `rule_level`) values ('PYTHON',  'ERROR');
  4. 重启所有的Azkaban executor。

如何关闭规则?

  1. 在 source_code_check_rule 表中找到对应规则,把 rule_level字段的级别 (ERROR、WARING、INFO)调整到大于 source_code_check_rule_interrupt_level 中对应代码类型的中断规则即可。例如: Python 默认的中断级别是 ERROR,需要把对应的规则调整成 WARING或INFO。
    update source_code_check_rule set rule_level = "INFO" where id = 对应的规则id;
  2. 重启所有的Azkaban executor。