Spark2.1.0事件总线分析——ListenerBus的继承体系
阅读提示:阅读本文前,最好先阅读《Spark2.1.0之源码分析——事件总线》。
通过阅读《Spark2.1.0之源码分析——事件总线》一文,理解了ListenerBus的定义后,本小节一起来看看有哪些类继承了它。ListenerBus的类继承体系如图1所示。
从图1中可以看到有三种ListenerBus的具体实现,分别为:
- SparkListenerBus:用于将SparkListenerEvent类型的事件投递到SparkListenerInterface类型的监听器;
- StreamingQueryListenerBus:用于将StreamingQueryListener.Event类型的事件投递到StreamingQueryListener类型的监听器,此外还会将StreamingQueryListener.Event类型的事件交给SparkListenerBus;
- StreamingListenerBus:用于将StreamingListenerEvent类型的事件投递到StreamingListener类型的监听器,此外还会将StreamingListenerEvent类型的事件交给SparkListenerBus。
SparkListenerBus也有两种实现:
- LiveListenerBus:采用异步线程将SparkListenerEvent类型的事件投递到SparkListener类型的监听器;
- ReplayListenerBus:用于从序列化的事件数据中重播事件。
有了对事件总线的这些介绍,读者已经在宏观上对其有所认识。但是如果没有具体的实现,ListenerBus本身也无法发挥作用。下一小节我们将选择对SparkListenerBus从更加微观的角度说明如何使用事件总线。
关于《Spark内核设计的艺术 架构设计与实现》
经过近一年的准备,《Spark内核设计的艺术 架构设计与实现》一书现已出版发行,图书如图:
纸质版售卖链接如下: