全部产品
Search
文档中心

开源大数据平台E-MapReduce:参数

更新时间:Aug 14, 2023

EMR Workflow支持配置内置时间参数、任务级别参数(本地参数)、工作流级别参数(全局参数)和项目级别参数,同时还支持参数传递功能。

参数配置

内置时间参数

参数定义

内置时间参数无需定义,可以直接在任务中使用。

参数使用

EMR Workflow支持$[...]格式的内置时间参数,$[yyyyMMddHHmmss]是可以任意分解组合的,例如$[yyyyMMdd]$[HHmmss]$[yyyy-MM-dd]等。您也可以通过以下两种方式对时间参数进行修改:

  • 使用add_months()函数,该函数用于加减月份, 第一个入口参数为[yyyyMMdd],表示返回时间的格式;第二个入口参数为月份偏移量,表示加减多少个月。

    • 后 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 小时:$[HHmmss+N/24]

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

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

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

任务级别参数(本地参数)

任务级别参数是指针对任务节点有效的参数。在任务定义页面配置的自定义参数,默认仅作用于该任务。如果配置了参数传递则可将该参数作用到下游任务中。

参数定义

在任务定义页面,单击自定义参数image.png图标,新增自定义参数,配置如下图所示。image.png

参数示例说明:

  • dt:自定义参数的参数名。

  • IN:表示参数仅能在当前节点使用。如果设置为OUT,则表示参数可以向下游传递。

  • VARCHAR:参数的数据类型。

  • $[yyyy-MM-dd]:参数对应的值。

参数使用

在任务定义中,通过${...}的方式使用本地参数。

工作流级别参数(全局参数)

全局参数是指针对整个工作流的所有任务节点都有效的参数,在保存工作流定义时配置。

参数定义

在保存工作流定义时,可以添加全局参数,填写对应的参数名称和参数值。

image.png

参数使用

在保存工作流定义时,通过${...}的方式使用全局参数。

项目级别参数

项目级别参数是指针对整个项目中所有工作流都有效的参数。

参数定义

项目管理下的项目设置>项目参数页面,单击创建项目级别参数,填写对应的参数名称和参数值。

image.png

参数使用

在任务定义中,通过${...}的方式使用项目级别的参数。

参数传递

EMR Workflow允许在任务间进行参数传递,目前传递方向仅支持上游任务单向传递给下游任务。

配置参数传递时,需要在上游任务中配置方向为OUT的自定义参数,声明该参数会向下游任务传递。同时需要在上游任务中增加echo语句,格式为echo "#{setValue(key=value)}",其中key为OUT类型参数的参数名,value为希望向下游传递的参数值,可以为常量、其他任务参数的值或者bash脚本中的变量值。下游任务无需参数配置,可以直接通过${...}的方式使用上游任务传递给下游任务的参数。

参数传递示例:

传递常量

例如,新增OUT方向的自定义参数res,通过echo "#{setValue(res=1234)}"向下游任务传递参数res=1234。

image.png

传递任务参数

例如,新增IN方向的参数param=123,OUT方向的自定义参数res,通过echo "#{setValue(res=${param})}"向下游任务传递参数res为param的值,即123。

image.png

传递bash变量

例如,新增OUT方向的自定义参数res,通过echo "#{setValue(res=${RESULT})}"向下游任务传递参数res为bash变量RESULT的值,即123。

image.png

参数优先级

EMR Workflow中涉及的参数值的定义来自以下类型:

因为参数的值存在多个来源,当参数名相同时,就会存在参数优先级的问题。EMR Workflow参数的优先级从高到低为:任务级别参数(本地参数) > 上游任务传递给下游任务的参数 > 工作流级别参数(全局参数) > 项目级别参数