Structured Streaming 比 Spark Streaming 开发起来更简单, 开发人员无需构造 RDD 的 DAG 执行图, 太过关注程序性能.
Structured Streaming 提供的 DataFrame API 相对高级. 并且运行在 spark sql 的引擎上. 这样就能应用到 saprk sql 本身的优化功能 如 执行计划优化 和 内存管理等
Structured Streaming 比 Spark Streaming 更具备实时性.
Structured Streaming 更好的支持事件时间.
流数据处理最基本的问题就是如何对不断更新的无边界数据建模。
之前讲的 Spark Streaming 就是把流数据按一定的时间间隔分割成许多个小的数据块进行批处理。在 Structured Streaming 的模型中,我们要把数据看成一个无边界的关系型的数据表。每一个数据都是表中的一行,不断会有新的数据行被添加到表里来。我们可以对这个表做任何类似批处理的查询,Spark 会帮我们不断对新加入的数据进行处理,并更新计算结果。
与 Spark Streaming 类似,Structured Streaming 也是将输入的数据流按照时间间隔(以一秒为例)划分成数据段。每一秒都会把新输入的数据添加到表中,Spark 也会每秒更新输出结果。输出结果也是表的形式,输出表可以写入硬盘或者 HDFS。