一,概述
Structured Streaming是一个可扩展和容错的流处理引擎,并且是构建于spark sql引擎之上。可以用处理静态数据的方式去处理你的流计算。随着流数据的不断流入,Sparksql引擎会增量的连续不断的处理并且更新结果。可以使用DataSet/DataFrame的API进行 streaming aggregations, event-time windows, stream-to-batch joins等等。计算的执行也是基于优化后的spark sql引擎。通过checkpointing and Write Ahead Logs该系统可以保证点对点,一次处理,容错担保。
内部,默认情况下,Structured Streaming查询使用的是微批处理引擎,其处理数据流作为一些列小的批处理job,因此实现低至100ms的端到端延迟和仅一次处理容错担保。然而,从spark2.3.1开始,已经引入了一个新的更低延迟的处理模型,叫做Continuous Processing,该模型可以实现低至1ms的端到端延迟,并且实现最少一次担保。
Structured streaming的核心观点是将数据流当作一张表,该表在被连续不断的追加数据。
这使得structured streaming成为了一种新的处理模型,该模型很像批处理模型。可以像执行标准的批处理查询一样执行你的流处理计算,Spark内部运行的时候是以在无界输入表上的增量查询方式。
可以把输入的数据流当成一张表,