DolphinScheduler JavaTask动态传参秘笈:轻松实现使命间数据流动 ...

打印 上一主题 下一主题

主题 845|帖子 845|积分 2535

Apache DolphinScheduler的JavaTask可以通过在使命执行日记中输出特定格式的参数来支持OUT参数的下游传输,通过捕获日记并将其作为参数传递给下游使命。这种机制允许使命间的数据流动和通信,增强了工作流的灵活性和动态性。
那详细要怎么做呢?本文将举行详细的讲解。
0 修改一行源码
  1. org.apache.dolphinscheduler.plugin.task.java.JavaTask
复制代码

1、针对JAVA类

流程定义图


1.1、javaTaskForClass设置


1.2、taskA设置


1.3、taskA输出
  1. INFO] 2024-07-11 21:38:46.121 +0800 - Set taskVarPool: [{"prop":"output","direct":"IN","type":"VARCHAR","value":"123"}] successfully
  2. [INFO] 2024-07-11 21:38:46.121 +0800 - ***********************************************************************************************
  3. [INFO] 2024-07-11 21:38:46.121 +0800 - *********************************  Execute task instance  *************************************
  4. [INFO] 2024-07-11 21:38:46.122 +0800 - ***********************************************************************************************
  5. [INFO] 2024-07-11 21:38:46.122 +0800 - Final Shell file is:
  6. [INFO] 2024-07-11 21:38:46.122 +0800 - ****************************** Script Content *****************************************************************
  7. [INFO] 2024-07-11 21:38:46.122 +0800 - #!/bin/bash
  8. BASEDIR=$(cd `dirname $0`; pwd)
  9. cd $BASEDIR
  10. source /etc/profile
  11. export HADOOP_HOME=${HADOOP_HOME:-/home/hadoop-3.3.1}
  12. export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop/etc/hadoop}
  13. export SPARK_HOME=${SPARK_HOME:-/home/spark-3.2.1-bin-hadoop3.2}
  14. export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python}
  15. export HIVE_HOME=${HIVE_HOME:-/home/hive-3.1.2}
  16. export FLINK_HOME=/home/flink-1.18.1
  17. export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax}
  18. export SEATUNNEL_HOME=/opt/software/seatunnel
  19. export CHUNJUN_HOME=${CHUNJUN_HOME:-/opt/soft/chunjun}
  20. export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$SEATUNNEL_HOME/bin:$CHUNJUN_HOME/bin:$PATH
  21. echo 123
  22. [INFO] 2024-07-11 21:38:46.123 +0800 - ****************************** Script Content *****************************************************************
  23. [INFO] 2024-07-11 21:38:46.123 +0800 - Executing shell command : sudo -u root -i /tmp/dolphinscheduler/exec/process/root/13850571680800/14237629094560_9/2095/1689/2095_1689.sh
  24. [INFO] 2024-07-11 21:38:46.127 +0800 - process start, process id is: 884510
  25. [INFO] 2024-07-11 21:38:48.127 +0800 -  ->
  26.     123
  27. [INFO] 2024-07-11 21:38:48.128 +0800 - process has exited. execute path:/tmp/dolphinscheduler/exec/process/root/13850571680800/14237629094560_9/2095/1689, processId:884510 ,exitStatusCode:0 ,processWaitForStatus:true ,processExitValue:0
复制代码
2、针对JAR

2.1、jar包封装示例


  • 2.1.1、pom.xml
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3.   <modelVersion>4.0.0</modelVersion>
  4.   <groupId>demo</groupId>
  5.   <artifactId>java-demo</artifactId>
  6.   <version>1.0-SNAPSHOT</version>
  7.   <packaging>jar</packaging>
  8.   <name>java-demo</name>
  9.   <url>http://maven.apache.org</url>
  10.   <properties>
  11.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12.   </properties>
  13.   <dependencies>
  14.     <dependency>
  15.       <groupId>junit</groupId>
  16.       <artifactId>junit</artifactId>
  17.       <version>3.8.1</version>
  18.       <scope>test</scope>
  19.     </dependency>
  20.   </dependencies>
  21.   <build>
  22.     <plugins>
  23.       <plugin>
  24.         <groupId>org.apache.maven.plugins</groupId>
  25.         <artifactId>maven-shade-plugin</artifactId>
  26.         <version>3.2.4</version>
  27.         <executions>
  28.           <execution>
  29.             <phase>package</phase>
  30.             <goals>
  31.               <goal>shade</goal>
  32.             </goals>
  33.             <configuration>
  34.               <artifactSet>
  35.                 <excludes>
  36.                   <exclude>com.google.code.findbugs:jsr305</exclude>
  37.                   <exclude>org.slf4j:*</exclude>
  38.                   <exclude>log4j:*</exclude>
  39.                   <exclude>org.apache.hadoop:*</exclude>
  40.                 </excludes>
  41.               </artifactSet>
  42.               <filters>
  43.                 <filter>
  44.                   
  45.                   <artifact>*:*</artifact>
  46.                   <excludes>
  47.                     <exclude>META-INF/*.SF</exclude>
  48.                     <exclude>META-INF/*.DSA</exclude>
  49.                     <exclude>META-INF/*.RSA</exclude>
  50.                   </excludes>
  51.                 </filter>
  52.               </filters>
  53.               <transformers combine.children="append">
  54.                 <transformer
  55.                         implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  56.                   <mainClass>demo.Demo</mainClass>
  57.                 </transformer>
  58.               </transformers>
  59.             </configuration>
  60.           </execution>
  61.         </executions>
  62.       </plugin>
  63.       <plugin>
  64.         <groupId>org.apache.maven.plugins</groupId>
  65.         <artifactId>maven-compiler-plugin</artifactId>
  66.         <configuration>
  67.           <source>1.8</source>
  68.           <target>1.8</target>
  69.         </configuration>
  70.       </plugin>
  71.     </plugins>
  72.   </build>
  73. </project>
复制代码

  • 2.1.2、demo.Demo类详细内容
  1. package demo;
  2. public class Demo {
  3.     public static void main(String[] args) {
  4.         System.out.println("${setValue(output=123)}");
  5.     }
  6. }
复制代码

  • 2.1.3、上传jar到资源中央
mvn clean package,将编译好的java-demo-1.0-SNAPSHOT.jar上传到资源中央,
2.2、流程定义图


2.3、javaTask


2.4、testTask


2.5、testTask内容输出
  1. [INFO] 2024-07-11 21:56:05.324 +0800 - Set taskVarPool: [{"prop":"output","direct":"IN","type":"VARCHAR","value":"123"}] successfully
  2. [INFO] 2024-07-11 21:56:05.324 +0800 - ***********************************************************************************************
  3. [INFO] 2024-07-11 21:56:05.324 +0800 - *********************************  Execute task instance  *************************************
  4. [INFO] 2024-07-11 21:56:05.324 +0800 - ***********************************************************************************************
  5. [INFO] 2024-07-11 21:56:05.325 +0800 - Final Shell file is:
  6. [INFO] 2024-07-11 21:56:05.325 +0800 - ****************************** Script Content *****************************************************************
  7. [INFO] 2024-07-11 21:56:05.325 +0800 - #!/bin/bash
  8. BASEDIR=$(cd `dirname $0`; pwd)
  9. cd $BASEDIR
  10. source /etc/profile
  11. export HADOOP_HOME=${HADOOP_HOME:-/home/hadoop-3.3.1}
  12. export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop/etc/hadoop}
  13. export SPARK_HOME=${SPARK_HOME:-/home/spark-3.2.1-bin-hadoop3.2}
  14. export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python}
  15. export HIVE_HOME=${HIVE_HOME:-/home/hive-3.1.2}
  16. export FLINK_HOME=/home/flink-1.18.1
  17. export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax}
  18. export SEATUNNEL_HOME=/opt/software/seatunnel
  19. export CHUNJUN_HOME=${CHUNJUN_HOME:-/opt/soft/chunjun}
  20. export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$SEATUNNEL_HOME/bin:$CHUNJUN_HOME/bin:$PATH
  21. echo 123
  22. [INFO] 2024-07-11 21:56:05.325 +0800 - ****************************** Script Content *****************************************************************
  23. [INFO] 2024-07-11 21:56:05.325 +0800 - Executing shell command : sudo -u root -i /tmp/dolphinscheduler/exec/process/root/13850571680800/14243296570784_1/2096/1691/2096_1691.sh
  24. [INFO] 2024-07-11 21:56:05.329 +0800 - process start, process id is: 885572
  25. [INFO] 2024-07-11 21:56:07.329 +0800 -  
复制代码
转载自Journey
原文链接:https://segmentfault.com/a/1190000045054384
本文由 白鲸开源 提供发布支持!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表