输出结果
流处理程序经常将它们的计算结果发送到一些外部系统中去,例如:Apache Kafka,文件系统,或者数据库中。Flink提供了一个维护的很好的sink算子的集合,这些sink算子可以用来将数据写入到不同的系统中去。我们也可以实现自己的sink算子。也有一些Flink程序并不会向第三方外部系统发送数据,而是将数据存储到Flink系统内部,然后可以使用Flink的可查询状态的特性来查询数据。
在我们的例子中,计算结果是一个DataStream[SensorReading]
数据记录。每一条数据记录包含了一个传感器在5秒钟的周期里面的平均温度。计算结果组成的数据流将会调用print()
将计算结果写到标准输出。
avgTemp.print()
要注意一点,流的Sink算子的选择将会影响应用程序端到端(
end-to-end
)的一致性,具体就是应用程序的计算提供的到底是at-least-once
还是exactly-once
的一致性语义。应用程序端到端的一致性依赖于所选择的流的Sink算子和Flink的检查点算法的集成使用。