Structured Streaming:基于spark sql引擎实现实时数据分析
在structured Streaming模型中,把数据看成无边界的关系型的数据表,每个数据都是表中的一行。将输入的数据流按照时间间隔(以一秒为例)划分成数据段,每秒都会把新输入的数据添加到表中,输出的结果也是表的形式,可以将表写入硬盘或者HDFS
三种输出模式:
1、完全模式:将整个更新过的输出表都写入外部存储;
2、附加模式:上一次触发之后新增加的行才会被写入外部存储。如果老数据有改动则不适合这个模式;
3、更新模式:上一次触发之后被更新的行才会被写入外部存储
Structured Streaming 不会完全存储输入数据。每个时间间隔都会读取最新的输入,进行处理,更新输出表,然后把这次的输入删除。
该模型在根据事件时间处理数据时十分方便
words = ... # 这个 DataFrame 代表词语的数据流,schema 是 { timestamp: Timestamp, word: String}
windowedCounts = words.groupBy(
window(words.timestamp, "1 minute", "10 seconds"),
words.word
).count()
.sort(desc("count"))
.limit(10)
创建了一个窗口长度为1分钟,滑动间隔为10秒的window&#