巧用输出变量,提升Dolphinscheduler工作流灵活性和可维护性

输出变量是 DolphinScheduler 任务调度中实现数据流动与任务协作的核心机制,通过显式定义和传递参数,解决了跨节点数据共享、优先级冲突等问题,同时支持复杂流程编排(如子流程、条件分支)。合理使用输出变量能显著提升工作流的灵活性和可维护性。本文将介绍 DolphinScheduler 中重要的输出变量及其使用方法。

输出变量是 DolphinScheduler 任务调度中实现数据流动与任务协作的核心机制,通过显式定义和传递参数,解决了跨节点数据共享、优先级冲突等问题,同时支持复杂流程编排(如子流程、条件分支)。合理使用输出变量能显著提升工作流的灵活性和可维护性。本文将介绍 DolphinScheduler 中重要的输出变量及其使用方法。

1、Shell 脚本中,单引号 (')、双引号 (") 和反引号 (`)使用

在 Shell 脚本中,单引号 (')、双引号 (") 和反引号 (`) 各自有不同的作用和用法。理解它们的区别和用法对于编写和调试 Shell 脚本非常重要

1.1、单引号 (')

  • 用途:完全引用,用于保护字符串中的所有字符,不进行变量替换或命令替换

  • 特性:引号内的任何字符都将原样输出,不会进行任何解释

VAR="world"echo 'Hello, $VAR'  # 输出:Hello, $VAR

1.2、双引号 (")

  • 用途:部分引用,用于保护字符串中的大部分字符,但允许变量替换和命令替换

  • 特性:引号内的变量和命令会被解释,其余字符原样输出

VAR="world"echo "Hello, $VAR"  # 输出:Hello, world

1.3、反引号 (`)

  • 用途:命令替换,用于执行引号内的命令,并将命令的输出作为结果返回

  • 特性:引号内的命令会被执行,结果会替换反引号中的内容

  • 注意:反引号是旧的命令替换方式,更推荐使用 $()

DATE=`date`echo "Current date and time: $DATE"  # 输出当前日期和时间

1.4、推荐使用 $() 进行命令替换

  • 更现代和可读性更好

  • 可以嵌套使用,而反引号嵌套使用比较困难

DATE=$(date)echo "Current date and time: $DATE"  # 输出当前日期和时间# 嵌套命令替换示例OUTER=``(echo "Outer ``(echo "Inner")")echo $OUTER  # 输出:Outer Inner

1.5、使用场景

  • 单引号:当你不希望字符串中的任何内容被解释时使用,例如正则表达式、特殊字符等

  • 双引号:当你希望字符串中包含变量或命令替换时使用

  • 反引号/$():当你需要执行命令并使用其输出时使用

2、Dolphinscheduler中的输出变量和文件传递

2.1、Shell输出变量

  • 2.1.1、流程如下


    17422934212252e6ee3d9bd630f0b3c2c22804aba034e

  • 2.1.2、任务配置
    taskA


174229342123359b77ac048442a19fa391c5ad09a82f5

echo 'taskA'echo "#{setValue(linesNum=${lines_num})}"echo '${setValue(words=20)}'

注意 : 这里${lines_num}其实直接就是通过Worker进行变量进行替换的

taskB

1742293421238884c41925dd8ce1a43f4ce34aa547835


echo 'taskB'echo ${linesNum}echo ${words}

  • 2.1.3、结果输出
    主要看taskB的输出

2.2、Shell文件传递

  • 2.2.1、流程如下

17422934219106c10b26eb6cdbcab6e947ea851402f4d

  • 2.2.2、任务配置
    fileUploadTask

1742293421933549ad5e2604a547c28b237e1aa7ea027

echo 'fileUploadTask'mkdir -p data/test1 data/test2echo "test1 message" >> data/test1/text.txtecho "test2 message" >> data/test2/text.txttree.

fileDownloadTask

1742293421945c7b4096f2d1c91943b42ee71810c1662

echo 'fileDownloadTask'cat input_dir/test1/text.txtcat input_dir/test2/text.txt
  • 2.2.3、结果输出
    fileDownloadTask


2.3、SQL任务输出变量

模式从SqlTask任务进行结果的输出,ShellTask对结果使用

  • 2.3.1、流程如下

174229342255754b7aa4c554898ac46390506bd2306c6

  • 2.3.2、任务配置
    sqlOutVarTask

1742293422589504ace83bee88bdd43e58ad182c85679

select user_name as userNameList from t_ds_user

readOutVarTask

1742293422664059acd874e1ff26e6ce194a31ed42015

echo 'readOutVarTask'echo ${userNameList}
  • 2.3.3、结果输出
    readOutVarTask

    以上就是今天的全部内容了,希望对大家更好地使用DolphinScheduler有所帮助。

转载自Journey
原文链接:https://segmentfault.com/a/1190000045035406