DolphinScheduler技术分析(七)

本文详细分析了DolphinScheduler DAO模块下的实体类,包括ProcessData、TaskDefinition和TaskInstance。讨论了实体类中涉及的List接口、Map接口、Objects类的常用方法,以及Jackson库在序列化与反序列化中的使用策略和JsonNode在JSON操作中的作用。此外,还提到了Java对象序列化的重要性。

 2021SC@SDUSC

DophinScheduler dao模块下实体代码详情分析

ProcessData实体下:

 引入

 java.util.List接口:

       List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组,List允许有相同的元素。
  除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
  实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。

 

TaskDefinition实体下: 

map接口:

Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。

 

java.util.Objects 类:
包含了几个静态方法,可以实现对对象的比较、生成hash code之类的功能,很多方法里考虑了对象是null的情况,在输入的参数是null时有特定的处理方式。 

经常出现的equals()、hashcode()、tostring()方法都是包含在该类里的

1.public static boolean equals(Object a, Object b)
比较对象a和对象b,使用的是第一个参数的equals()方法,
如果两个参数中有一个是null,则返回false,
如果两个参数都是null,则返回true。

 

2.public static int hashCode(Object o)
得到一个对象的hash code,如果参数为null,返回0

 

3.public static String toString(Object o)
调用对象的toString()方法,如果参数是null,返回字符串"null"

 

流的新类 java.util.stream.Collectors 实现了 java.util.stream.Collector 接口,同时又提供了大量的方法对流 ( stream ) 的元素执行 map and reduce 操作,或者统计操作。 

 

 jackson使用@JsonDeserialize与@JsonSerialize控制序列化与反序列化使用的实际类型:

       默认情况下,序列化时会获取对象的实际类型,然后根据可见性规则,获取对象以及其父类的所有属性进行序列化
        默认情况下,反序列化时,如果使用的对象类型、属性类型不是最终类型,而是接口或者抽象类型,如Map接口等,此时jackson会选择一种常用的实现类来进行反序列化,如Map->HashMap,List->ArrayList,Set->HashSet等
        如果在序列化时只想序列化对象某父级类型的属性,反序列化时希望指定接口或者抽象类型的实现类,jackson提供了以下注解:


 . JsonDeserialize:通过as属性控制反序列化后最终的实现类
 . JsonSerialize:通过as属性控制序列化时使用的实际父类
 

 

jackson.jsonNode是Jackson的json树模型(对象图模型)。Jackson能读JSON至JsonNode实例,写JsonNode到JSON。

TaskInstance实体下: 

 

 

        类通过实现java.io.Serializable接口可以启用其序列化功能。未实现次接口的类无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。 

       要想序列化对象,必须先创建一个OutputStream,然后把它嵌进ObjectOutputStream。这时,就能用writeObject()方法把对象写入OutputStream了。

Apache DolphinScheduler(incubator,原EasyScheduler)是一个大数据分布式工作流任务调度系统,主要解决大数据研发过程中ETL处理错综复杂的依赖关系,而不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。 设计特点:一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 其主要目标如下: 1、以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态 2、支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等 3、支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作 4、支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败 5、支持工作流全局参数及节点自定义参数设置 6、支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑 7、支持任务日志在线查看及滚动、在线下载日志等 8、实现集群HA,通过Zookeeper实现Master集群Worker集群去中心化 9、支持对Master/Worker cpu load,memory,cpu在线查看 10、支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计 11、支持补数 12、支持多租户 13、支持国际化 14、还有更多等待伙伴们探索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值