本篇介绍如何在 DolphinScheduler 中灵活地为动态任务分配执行参数,通过配置和使用方法详解,帮助用户实现高效的任务自动化与管理。
### DolphinScheduler 海豚调度器动态传递任务执行参数
#### 一、重要性及应用场景
**DolphinScheduler(简称DS)** 是一款强大的分布式任务调度平台,支持多种类型的作业执行,如Shell、Python、Spark等。它能够高效地管理任务间的依赖关系,并提供了丰富的功能来满足企业级的数据处理需求。在大数据领域,特别是对于需要频繁执行批处理任务的场景来说,动态传参的功能显得尤为重要。
#### 二、动态传参的核心价值
动态传参是DS的一项关键特性,它允许用户在任务流中灵活地传递变量值,这对于批量补采数据或自动化执行一系列作业非常有用。例如,在需要对不同日期的数据进行处理时,可以通过设置一个全局参数来控制所有任务中的日期变量,而无需逐个修改每个任务节点的配置。
#### 三、使用方法详解
##### 1. **基本概念**
- **自定义OUT参数**:这是实现动态传参的基础。通过在任务节点中定义一个OUT参数,可以将其作为输出传递给下一个任务节点。
- `${setValue(key=$value)}`:这个命令用于设置自定义OUT参数的值,其中`key`表示参数名,`$value`表示参数值。
- `${value}`:用于在下游任务中引用前一任务传递过来的参数值。
##### 2. **操作步骤**
- **步骤1**:在第一个任务节点中定义并设置OUT参数。例如,在任务节点111中,我们定义了一个名为`date_str1`的OUT参数,并将其设置为当前日期的前一天。
```bash
data_str=`date -d 0 days ago +%Y%m%d`
echo ${setValue(date_str1=$data_str)}
```
- **步骤2**:在下游任务节点中接收并使用这些参数。例如,在任务节点222中,我们首先打印出从上游节点传递过来的`date_str1`参数值,然后再将其设置为新的OUT参数`date_str2`。
```bash
echo ${date_str1}
date_str=${date_str1}
echo ${setValue(date_str2=$date_str)}
```
- **步骤3**:继续在后续任务节点中传递或使用参数。例如,在任务节点333中,我们可以直接打印出从任务节点222传递过来的`date_str2`参数值。
```bash
echo ${date_str2}
```
##### 3. **注意事项**
- 当需要向下一级传递动态参数时才使用自定义OUT参数,否则不需要。
- 设置的传递变量参数在所有需要调用的任务节点中必须唯一,避免混淆。
#### 四、实战案例
为了更好地理解动态传参的实现过程,下面提供了一个完整的示例:
1. **任务节点111**
- **脚本内容**:
```bash
data_str=`date -d 0 days ago +%Y%m%d`
echo ${setValue(date_str1=$data_str)}
```
- **自定义参数**:`date_str1OUTVARCHAR`
2. **任务节点222**
- **脚本内容**:
```bash
echo ${date_str1}
date_str=${date_str1}
echo ${setValue(date_str2=$date_str)}
```
- **自定义参数**:`date_str2OUTVARCHAR`
3. **任务节点333**
- **脚本内容**:
```bash
echo ${date_str2}
```
#### 五、总结
通过上述示例可以看出,DolphinScheduler的动态传参功能极大地方便了批量数据处理任务的自动化执行,减少了人工干预的需求。对于需要频繁进行补采数据的场景来说,这一特性无疑是一个极大的生产力提升工具。开发者只需在任务流的入口处设置好参数,即可轻松实现参数在整个流程中的传递,极大地简化了开发与运维的工作流程。