Spark系列 – 结构化数据流基本内容
本文将介绍Spark结构化数据流的基本概念和使用方法,StructuredStreaming的编程模型以及外部存储器模式等内容。

Spark结构化数据流是基于SparkSQL引擎的可扩展和容错的数据流处理框架,可以处理结构化数据流,并且保证仅一次容错。数据以增量连续方式运行,在流数据到达时进行更新。可以使用scala、java、python或R的DataSet/DataFrame API来表示数据流聚合、时间窗口等,通过检查点、预写日志方式实现容错。
编程模型
StructuredStreaming的关键是将实时数据流作为无边界的连续追加的表,和批处理模型很像,实时处理可以看作是一个静态表进行处理。
每个消息实体作为表的一行追加到表中,针对输入表查询将生成结果表,每次触发新的ROWDATA将被追加到输入表中,然后更新结果表。无论何时更新,我们都希望将更新后的数据写入到外部存储器。
外部存储器模式
StructuredStreaming支持三种外部存储器模式:
- CompleteMode:每次触发整个结果表将写入到外部存储器。适用于聚合查询输出的情况。
- AppendMode:每次触发将追加到结果表中的新行才会被写入到外部存储器,适用于结果表中现有行不会更改的查询。
- UpdateMode:每次触发后在结果表中较上次触发后更新或新增的行才会被写入到外部存储器。如果没有聚合操作,则该模式与AppendMode相同。如果有聚合操作,则可以基于watermark清理过期的状态。
需要注意的是,StructuredStreaming只读取最近可用的数据而不是整个数据表,然后更新结果表,然后就丢弃输入数据,只保留处理最新状态的数据。
以上就是Spark结构化数据流基本内容的介绍,想要了解更多信息,请关注IT那活儿(上海新炬王翦团队)。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6258.html
