- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
项目3-1DatastreamAPI高阶特性:窗口与处理函数1
目录CONTENTS01.知识准备02.任务实现:热门URL统计TopN03.总结与注意事项2
01知识准备3
无限流处理的挑战与窗口机制Windowing:TamingtheInfiniteStream无限数据流的挑战数据无界、计算资源有限、需持续输出有价值的信息。窗口的核心作用将无限数据切割成有限块,实现限定数据范围、防止系统过载、并支持状态管理。Flink原生窗口类型概览滚动窗口固定大小,无重叠滑动窗口固定大小,有重叠会话窗口动态间隙,合并碎片全局窗口覆盖全局,手动触发4
滚动窗口(TumblingWindow)固定大小、无重叠的窗口,适合周期性统计。基于处理时间的滚动窗口以处理时间为基准,将数据分配到固定时长的窗口中。适用于对延迟要求极高、可接受近似结果的场景。代码示例:每5秒统计一次单词访问量stream.keyBy(word-word).window(TumblingProcessingTimeWindows.of(Time.seconds(5))).reduce((a,b)-a+b).print();时间语义对比ProcessingTime基于机器系统时间,处理简单,延迟最低,但结果受机器影响,不精确。EventTime基于事件自带时间戳,结果精确,可处理乱序,但需要配合水印,延迟较高。5
滑动窗口(SlidingWindow)通过窗口大小与滑动步长两个参数定义,数据可能同时属于多个窗口,实现平滑统计。事件时间滑动窗口示例//每10分钟统计最近1小时的URL访问量stream.keyBy(event-event.url).window(SlidingEventTimeWindows.of(Time.hours(1),Time.minutes(10))).aggregate(newCountAggregate()).print();此例中,窗口大小为1小时,滑动步长为10分钟,因此一个事件最多可能属于6个不同的窗口计算。窗口分配机制核心逻辑在于assignWindows方法,它会为每个元素分配其所属的所有窗口。滑动窗口通过重叠计算实现数据平滑,但资源开销相对更高。6
会话窗口(SessionWindow)基于活跃间隙(Gap)动态合并数据碎片,适用于捕捉用户活动或任何不连续发生的突发性事件。间隙(Gap)策略静态间隙(StaticGap)全局统一的固定时长,如30分钟无活动则结束会话。动态间隙(DynamicGap)根据事件特征动态计算间隙,如用户等级决定超时时间。事件时间会话窗口示例//当用户访问间隔超过30分钟,则开启新会话stream.keyBy(event-event.userId).window(EventTimeSessionWindows.withGap(Time.minutes(30))).aggregate(newSessionAnalysis()).print();该模式能灵活应对无序或突发流量,精准捕捉真实会话,但间隙参数对结果影响敏感。7
全局窗口(GlobalWindow)覆盖整个数据流的单一窗口,默认永不触发计算,必须搭配自定义触发器使用,赋予开发者完全的控制权。代码结构示例stream.keyBy(event-event.id).window(GlobalWindows.create()).trigger(newCountTrigger(1000))//自定义触发器.evictor(...)//可选驱逐器.process(newGlobalAnalysis()).print();适用于需要人工控制触发时机的复杂场景,如按特定业务规则触发。自定义触发器(Trigger)通过继承Trigger接口,实现基于元素数量、处理时间或事件时间的触发逻辑。??重要提醒需警惕状态无限增长带来的内存风险,建议结合Evictor或StateTTL使用。8
增量聚合函数:高效计算的核心窗口未闭合前持续更新结果,状态占用低,延迟小,是提升实时性能的首选策略。ReduceFunction要求输入和输出类型一致,适合简单的归并操作,如求和、取最大值。.reduce((a,b)-a+b)AggregateFunction更通用,支持中间累加器,可完成均值、标准差等复杂统计。.aggregate(newAverageAggregate())以单词计数为例,每来一条数据,对应单词的计数就立即增加,无需等待窗口结束。9
全量聚合函数:信息完整性的保障窗
您可能关注的文档
- 相关法律法规知识- 河道修防工 - 中华人民共和国环境保护法相关内容 主讲教师李 安-1765263965226.pptx
- 相图里的强国密码 二元合金相图与中国材料自主之路-湖州职业技术学院-1765263539971.pptx
- 箱体类零件的装配与定位技巧-项目一 认识物料分拣设备-1765263649743.pptx
- 响应式设计教程.pptx
- 项目 胸部检查 肺与胸膜 -医学院 林 丹丹-1765263709466.pptx
- 项目 1-1 部署Flink 环境-1765264016508.pptx
- 项目 1-3 配置 flink 的 IDEA 开发环境-1765263482654.pptx
- 项目 2 客户接待咨询-任务 2.1 客户接待-1765263429604.pptx
- 项目 2 客户接待咨询-任务 2.2 客户咨询-1765263443721.pptx
- 项目 2 抹灰工程-1765263444491.pptx
- 中国国家标准 GB 10395.6-2025农业机械 安全 第6部分:植物保护机械.pdf
- GB 10395.6-2025农业机械 安全 第6部分:植物保护机械.pdf
- GB 10395.7-2025农业机械 安全 第7部分:联合收割机、饲料收获机、棉花收获机和甘蔗收获机.pdf
- 中国国家标准 GB 10395.7-2025农业机械 安全 第7部分:联合收割机、饲料收获机、棉花收获机和甘蔗收获机.pdf
- 《GB 10395.7-2025农业机械 安全 第7部分:联合收割机、饲料收获机、棉花收获机和甘蔗收获机》.pdf
- GB/T 42076.2-2025生物技术 细胞计数 第2部分:量化计数方法性能的实验设计与统计分析.pdf
- 中国国家标准 GB/T 42076.2-2025生物技术 细胞计数 第2部分:量化计数方法性能的实验设计与统计分析.pdf
- 《GB/T 42076.2-2025生物技术 细胞计数 第2部分:量化计数方法性能的实验设计与统计分析》.pdf
- GB/T 46735.1-2025高温蓄电池 第1部分:一般要求.pdf
- 《GB/T 46735.1-2025高温蓄电池 第1部分:一般要求》.pdf
原创力文档


文档评论(0)