任务参数

任务参数应用于算法建模任务中获取动态参数进行数据获取或任务运行,AIWorks提供参数配置的功能,详细参数如下:

参数配置

为使任务自动周期运行时能动态适配环境变化,数据科学提供了参数配置的功能。详细的参数配置如下表所示:

参数类型 设置方式 适用类型 参数编辑框示例

系统参数 - bdp.system.hadoopUserName
- bdp.system.hdfsServer
- bdp.system.hiveHost
- bdp.system.hivePort
- bdp.system.localPath
- bdp.system.remotePath
- bdp.system.runtime + ; - bdp.system.cyctime
- bdp.system.bizdate
- bdp.system.premonth
- bdp.system.currmonth

可直接在代码中引用

${bdp.system.hadoopUserName}
${bdp.system.hdfsServer}
${bdp.system.hiveHost}
${bdp.system.hivePort}
${bdp.system.runtime
${bdp.system.cyctime}

系统将自动替换这些参数的取值

Notebook全部任务类型和算法实验

自定义参数

在代码中引用 ${key1},${key2} , 然后在"`参数`"编辑框设置key1=value1 key2=value2

Notebook全部任务类型

  • 常量参数: param1="abc" param2='1234

  • 变量参数: param1=$[yyyymmdd] , 结果将基于bdp.system.cyctime的取值计算

  • 变量参数: param1=${yyyymmdd} , 结果将基于bdp.system.runtime的取值计算

Tips应用场景举例:
1. Notebook代码获取hive数据,需要相应权限账号获取hive域名与端口下某数据库的数据。
2. 算法实验进行模型训练,每天需读取最新分区的数据,则在读数据表中的分区中可填写动态参数`${bdp.system.cyctime}` 获取业务日期的数据,实现每天读取昨天分区数据进行模型训练。

系统参数

AIWorks提供了12个系统参数,定义如下:

  • ${bdp.system.hadoopUserName} --访问Hadoop集群的用户名

  • ${bdp.system.hdfsServer} --任务运行节点的hdfsServer域名和端口

  • ${bdp.system.hiveHost} --任务运行节点的Hive域名

  • ${bdp.system.hivePort} --任务运行节点的Hive端口

  • ${bdp.system.localPath} --模型本地(服务器)存储路径

  • ${bdp.system.remotePath} --模型HDFS存储路径

  • ${bdp.system.runtime} --任务运行时间,格式:yyyyMMddHHmmss

  • ${bdp.system.cyctime}--任务计划时间,格式:yyyyMMddHHmmss

  • ${bdp.system.bizdate} — 业务日期,格式:yyyyMMdd

  • ${bdp.system.bizdate2} --业务日期,格式:yyyy-MM-dd

  • ${bdp.system.premonth} --上个月(以计划时间为基准),格式:yyyyMM

  • ${bdp.system.currmonth} --当前月(以计划时间为基准),格式:yyyyMM

若使用系统参数,无需在编辑框设置,直接在代码中引用`${bdp.system.bizdate},${${bdp.system.runtime}}`即可,系统将自动替换代码中对这两个参数的引用字段。

任务计划时间,不是任务实际开始运行的时间,若设置了每天02:23开始运行,但此时系统资源不足,则任务会延迟执行。例如可配置为天任务,每天02:23开始运行,那么任务的定时时间是:2018-02-03 02:23:00,其中的日期部分会随着每天的运行而动态变化。
任务运行时间,指任务实际运行开始时间。

入门示例
假设存在一张分区表,以ds作为分区字段,算法实验需每天读取这张表的一个最新分区数据,其分区名由业务日期命名,例如20180412。现需要每天对此表的数据做处理,当前日期为2018年4月13日,则将读数据表的分区写成动态参数即可,如:

ds=${bdp.system.bizdate};

此算法实验运行的日期为2018年4月13日,系统在运行时会将系统参数替换,实际执行的SQL为:

select * from big_table2 where ds=20180412;

自定义参数

自定义参数一般用在Notebook中,可在代码中编辑 ${key1},${key2} ,然后在任务参数面板中输入 key1=value1 key2=value2 方可生效。
其中,value的计算分为两种类型:

  • 常量:直接替换的字符串或数字,例如 key1=1234 key2=abcdefg

  • 变量:基于 bdp.system.cyctime 取值计算出的取值,例如"`key1=${yyyyMMdd+1}`"表示按 bdp.system.cyctime的日期加一天。关于bdp.system.cyctime的取值,请参见系统参数的说明。

变量进行参数替换时只支持固定格式,且暂时不支持指定cyctime中的部分参数提取,例如不支持yyyy的提取。
  • 变量的格式

变量的格式支持 yyyyMMdd HHmmss ,其中MM表示月份,mm表示分钟,HH表示24小时制的小时,变量对大小写敏感

- 填写常量时,直接填写值
- 填写变量时,必须使用 $[参数] 的格式填写

供参考的变量参数配置:

  • 后N年:$[add_months(yyyyMMdd,12*N)]

  • 前N年:$[add_months(yyyyMMdd,-12*N)]

  • 后N月:$[add_months(yyyyMMdd,N)]

  • 前N月:$[add_months(yyyyMMdd,-N)]

  • 后N周:$[yyyyMMdd+7*N]

  • 前N周:$[yyyyMMdd-7*N]

  • 后N天:$[yyyyMMdd+N]

  • 前N天:$[yyyyMMdd-N]

  • 后N小时:$[hh24miss+N/24]

  • 前N小时:$[hh24miss-N/24]

  • 后N分钟:$[hh24miss+N/24/60]

  • 前N分钟:$[hh24miss-N/24/60]