Structured Streaming 数据处理与聚合操作深度解析
1. 数据读取与操作概述
在当前的技术环境下,截至 Spark 3.0,构建自定义流数据源和接收器的 API 仍处于实验阶段。DataSourceV2 计划虽引入了流 API,但尚未宣布稳定,因此目前没有官方方法从任意存储系统读取数据。
在流数据处理中,Structured Streaming 仅支持可增量执行的 DataFrame 操作,这些操作大致分为无状态操作和有状态操作。下面是一个简单的代码示例,展示了如何启动一个流查询:
# 代码示例
resultDSofStrings.writeStream.foreach(foreachWriter).start()
2. 无状态与有状态操作解析
2.1 无状态操作
无状态操作包括投影操作(如 select() 、 explode() 、 map() 、 flatMap() )和选择操作(如 filter() 、 where() )。这些操作对每个输入记录单独处理,不需要来自前一行的信息,因此属于无状态操作。
包含无状态操作的流查询支持追加和更新输出模式,但不支持完整模式。因为此类查询的处理输出行不会被未来数据修改,所以可以以追加模式写入所有流接收器。但由于它们不会跨输入记录组合信息,可能无法减少结果数据的体积。完整模式不被支持是因
超级会员免费看
订阅专栏 解锁全文
80

被折叠的 条评论
为什么被折叠?



