MAPREDUCE服务 MRS-Spark基本原理:Structured Streaming原理

时间:2023-11-07 14:09:49

Structured Streaming原理

Structured Streaming是构建在Spark SQL引擎上的流式数据处理引擎,用户可以使用Scala、Java、Python或R中的Dataset/DataFrame API进行流数据聚合运算、按事件时间窗口计算、流流Join等操作。当流数据连续不断的产生时,Spark SQL将会增量的、持续不断的处理这些数据并将结果更新到结果集中。同时,系统通过checkpoint和Write Ahead Logs确保端到端的完全一次性容错保证。

Structured Streaming的核心是将流式的数据看成一张不断增加的数据库表,这种流式的数据处理模型类似于数据块处理模型,可以把静态数据库表的一些查询操作应用在流式计算中,Spark执行标准的SQL查询,从不断增加的无边界表中获取数据。
图8 Structured Streaming无边界表

每一条查询的操作都会产生一个结果集Result Table。每一个触发间隔,当新的数据新增到表中,都会最终更新Result Table。无论何时结果集发生了更新,都能将变化的结果写入一个外部的存储系统。

图9 Structured Streaming数据处理模型

Structured Streaming在OutPut阶段可以定义不同的存储方式,有如下3种:

  • Complete Mode:整个更新的结果集都会写入外部存储。整张表的写入操作将由外部存储系统的连接器完成。
  • Append Mode:当时间间隔触发时,只有在Result Table中新增加的数据行会被写入外部存储。这种方式只适用于结果集中已经存在的内容不希望发生改变的情况下,如果已经存在的数据会被更新,不适合适用此种方式。
  • Update Mode:当时间间隔触发时,只有在Result Table中被更新的数据才会被写入外部存储系统。注意,和Complete Mode方式的不同之处是不更新的结果集不会写入外部存储。
support.huaweicloud.com/productdesc-mrs/mrs_08_000801.html