阅读提示:阅读本文前,最好请阅读《Spark2.1.0——深入浅出度量系统》和《深入浅出Spark2.1.0度量系统——Source继承体系》。
Source准备好度量数据后,我们就需要考虑如何输出和使用的问题。这里介绍一些常见的度量输出方式:阿里数据部门采用的一种度量使用方式就是输出到日志;在命令行运行过Hadoop任务(例如:mapreduce)的使用者也会发现控制台打印的内容中也包含度量信息;用户可能希望将有些度量信息保存到文件(例如CSV),以便将来能够查看;如果觉得使用CSV或者控制台等方式不够直观,还可以将采集到的度量数据输出到专用的监控系统界面。这些最终对度量数据的使用,或者说是输出方式,Spark将它们统一抽象为Sink。Sink的定义见代码清单1。
代码清单1 度量输出的定义
private[spark] trait Sink {
def start(): Unit
def stop(): Unit
def report(): Unit
}
从代码清单1可以看到Sink是一个特质,包含三个接口方法:
- start:启动Sink;
- stop:停止Sink;