从对应关系上分为四类:
1对1 dependency:一个上游pipeline task的dependency和一个下游pipeline task的dependency之间通过一个建立阻塞/运行关系,典型例子:一个AggSourceDependency对应一个AggSinkDependency
1对多dependency:一个上游pipeline task的dependency和多个下游pipeline task的dependency之间通过多个dependency建立阻塞/运行关系,典型例子:一个MultiCastSinkDependency对应多个MultiCastSourceDependency
多对1dependency:多个上游pipeline task和1个下游pipeline task之间通过多个dependency建立阻塞/运行关系,典型例子:多个UnionSinkDependency/SetSinkDependency对应一个UnionSourceDependency/SetSourceDependency
多对多dependency:多个上游pipeline task和多个下游pipeline task之间通过多个dependency建立阻塞/运行关系,典型例子:LocalExchangeSourceDependency/LocalExchangeSinkDependency
从功能上分为四类:
ReadDependency:阻塞/运行下游pipeline task的operator。阻塞时task进入BLOCKED_FOR_SOURCE状态,运行时进入RUNNABLE状态
WriteDependency:阻塞/运行上游pipeline task的sink operator。阻塞时task进入BLOCKED_FOR_SINK状态,运行时进入RUNNABLE状态
FinishDependency:阻塞/运行当前pipeline task的close操作。阻塞时task进入PENDING_FINISH状态
RuntimeFilterDependency:阻塞/运行当前pipeline task的source operator。当runtime filter到达ready或timeout时触发task执行。阻塞时task进入BLOCKED_FOR_RF状态,运行时进入RUNNABLE状态