Spark2.1.0事件总线分析——ListenerBus的继承体系

阅读提示:阅读本文前,最好先阅读《Spark2.1.0之源码分析——事件总线》。

         通过阅读《Spark2.1.0之源码分析——事件总线》一文,理解了ListenerBus的定义后,本小节一起来看看有哪些类继承了它。ListenerBus的类继承体系如图1所示。

Spark2.1.0事件总线分析——ListenerBus的继承体系
图1  ListenerBus的类继承体系

 

从图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内核设计的艺术 架构设计与实现》一书现已出版发行,图书如图:

Spark2.1.0事件总线分析——ListenerBus的继承体系

 

纸质版售卖链接如下:

京东:https://item.jd.com/12302500.html