DolphinScheduler JavaTask动态传参秘籍:轻松实现任务间数据流动
Apache DolphinScheduler的JavaTask可以通过在任务执行日志中输出特定格式的参数来支持OUT参数的下游传输,通过捕捉日志并将其作为参数传递给下游任务。这种机制允许任务间的数据流动和通信,增强了工作流的灵活性和动态性。
那具体要怎么做呢?本文将进行详细的讲解。
0 修改一行源码
org.apache.dolphinscheduler.plugin.task.java.JavaTask
1、针对JAVA类
流程定义图
1.1、javaTaskForClass设置
1.2、taskA设置
1.3、taskA输出
INFO] 2024-07-11 21:38:46.121 +0800 - Set taskVarPool: [{"prop":"output","direct":"IN","type":"VARCHAR","value":"123"}] successfully [INFO] 2024-07-11 21:38:46.121 +0800 - *********************************************************************************************** [INFO] 2024-07-11 21:38:46.121 +0800 - ********************************* Execute task instance ************************************* [INFO] 2024-07-11 21:38:46.122 +0800 - *********************************************************************************************** [INFO] 2024-07-11 21:38:46.122 +0800 - Final Shell file is: [INFO] 2024-07-11 21:38:46.122 +0800 - ****************************** Script Content ***************************************************************** [INFO] 2024-07-11 21:38:46.122 +0800 - #!/bin/bash BASEDIR=$(cd `dirname $0`; pwd) cd $BASEDIR source /etc/profile export HADOOP_HOME=${HADOOP_HOME:-/home/hadoop-3.3.1} export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop/etc/hadoop} export SPARK_HOME=${SPARK_HOME:-/home/spark-3.2.1-bin-hadoop3.2} export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python} export HIVE_HOME=${HIVE_HOME:-/home/hive-3.1.2} export FLINK_HOME=/home/flink-1.18.1 export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax} export SEATUNNEL_HOME=/opt/software/seatunnel export CHUNJUN_HOME=${CHUNJUN_HOME:-/opt/soft/chunjun} 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 echo 123 [INFO] 2024-07-11 21:38:46.123 +0800 - ****************************** Script Content ***************************************************************** [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 [INFO] 2024-07-11 21:38:46.127 +0800 - process start, process id is: 884510 [INFO] 2024-07-11 21:38:48.127 +0800 - -> 123 [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
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId> <artifactId>java-demo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>java-demo</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactSet> <excludes> <exclude>com.google.code.findbugs:jsr305</exclude> <exclude>org.slf4j:*</exclude> <exclude>log4j:*</exclude> <exclude>org.apache.hadoop:*</exclude> </excludes> </artifactSet> <filters> <filter> <!-- Do not copy the signatures in the META-INF folder. Otherwise, this might cause SecurityExceptions when using the JAR. --> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers combine.children="append"> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>demo.Demo</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
</project>
-
2.1.2、demo.Demo类具体内容
package demo;
public class Demo {
public static void main(String[] args) { System.out.println("${setValue(output=123)}"); }
}
-
2.1.3、上传jar到资源中心
mvn clean package,将编译好的java-demo-1.0-SNAPSHOT.jar上传到资源中心,
2.2、流程定义图
2.3、javaTask
2.4、testTask
2.5、testTask内容输出
[INFO] 2024-07-11 21:56:05.324 +0800 - Set taskVarPool: [{"prop":"output","direct":"IN","type":"VARCHAR","value":"123"}] successfully [INFO] 2024-07-11 21:56:05.324 +0800 - *********************************************************************************************** [INFO] 2024-07-11 21:56:05.324 +0800 - ********************************* Execute task instance ************************************* [INFO] 2024-07-11 21:56:05.324 +0800 - *********************************************************************************************** [INFO] 2024-07-11 21:56:05.325 +0800 - Final Shell file is: [INFO] 2024-07-11 21:56:05.325 +0800 - ****************************** Script Content ***************************************************************** [INFO] 2024-07-11 21:56:05.325 +0800 - #!/bin/bash BASEDIR=$(cd `dirname $0`; pwd) cd $BASEDIR source /etc/profile export HADOOP_HOME=${HADOOP_HOME:-/home/hadoop-3.3.1} export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop/etc/hadoop} export SPARK_HOME=${SPARK_HOME:-/home/spark-3.2.1-bin-hadoop3.2} export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python} export HIVE_HOME=${HIVE_HOME:-/home/hive-3.1.2} export FLINK_HOME=/home/flink-1.18.1 export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax} export SEATUNNEL_HOME=/opt/software/seatunnel export CHUNJUN_HOME=${CHUNJUN_HOME:-/opt/soft/chunjun} 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 echo 123 [INFO] 2024-07-11 21:56:05.325 +0800 - ****************************** Script Content ***************************************************************** [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 [INFO] 2024-07-11 21:56:05.329 +0800 - process start, process id is: 885572 [INFO] 2024-07-11 21:56:07.329 +0800 -
转载自Journey 原文链接:https://segmentfault.com/a/1190000045054384
本文由 白鲸开源科技 提供发布支持!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
基于Redis内核的热key统计实现方案|得物技术
一、Redis热key介绍 Redis热key问题是指单位时间内,某个特定key的访问量特别高,占用大量的CPU资源,影响其他请求并导致整体性能降低。而且,如果访问热key的命令是时间复杂度较高的命令,会使得CPU消耗变得更加严重;或者,如果访问的热key同时也是一个大key,也可能使得访问流量达到节点所在机器带宽上限。 二、Redis热key常见探测方法 突发的热点新闻、爆款商品、或者促销活动都可能导致访问热key的出现,目前,Redis官方和业界也都有不少热key探测与发现方法。 先通过一个表格整体预览一下当前存在的热key探测方案优缺点 Redis-cli的hotkeys参数 Redis自4.0起在Redis-cli中提供了hotkeys参数来方便用户进行实例级的热key分析功能,Redis-cli通过向Redis-server节点发送scan + object freq命令以遍历的方式分析Redis实例中所有key,然后返回实例中热key信息。 该方式存在以下几个问题: 使用该方案的前提条件是需要将Redis-server的淘汰策略maxmemory-policy参数设置为LF...
- 下一篇
VTS:基于Apache SeaTunnel的开源向量数据迁移工具
引言 VTS(Vector Transport Service),全称向量传输服务,是一个由Zilliz开发的专注于向量和非结构化数据迁移的开源工具。VTS的核心特点在于其基于Apache SeaTunnel开发,这一事实使其在数据处理和迁移方面具有显著的优势。Apache SeaTunnel作为一个分布式数据集成平台,以其丰富的连接器系统和多引擎支持而闻名,VTS正是在此基础上,进一步扩展了其在向量数据库迁移和非结构化数据处理的能力。 VTS:基于Apache SeaTunnel的开源向量数据迁移工具 什么是向量数据库 向量数据库是一种专门用于存储和检索向量数据的 数据库系统: • 它能够高效处理高维向量数据,支持相似性搜索 • 支持KNN(K-近邻)搜索 • 计算向量间的距离(欧氏距离、余弦相似度等) • 快速检索最相似的向量 • 主要用于AI和机器学习应用场景 • 图像检索系统 • 推荐系统 • 自然语言处理 • 人脸识别 • 相似商品搜索 开发动力和背景 作为领先的向量数据库服务提供商,Zilliz 深知开发出色的 AI 应用离不开数据本身。然而,在有效处理 AI 应用中的非结...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- CentOS7安装Docker,走上虚拟化容器引擎之路