四、Structured Streaming的事件-时间(Event-time)和延迟数据 (Late Data)

目录

1、基于事件-时间的窗口操作

2、延迟数据和水印操作


 Event-time是嵌入到数据本身的时间,所以首先 event-time 是一个基于事件的时间。对于许多的应用来说,你可能希望操作这个事件-时间。例如,如果你想获得每分钟物联网设备产生的事件数量,然后想使用数据产生时的时间(也就是数据的event-time),而不是Spark接收他们的时间。每个设备中的事件是表中的一行,而事件-时间是行中的一个列值。这就允许将基于窗口的聚合(比如每分钟的事件数)看成是事件-时间列的分组和聚合的特殊类型——每个时间窗口是一个组,每行可以属于多个窗口/组。

       而且,这个模型自然处理那些比期望延迟到达的事件-时间数据。当Spark正在更新结果表时,当有延迟数据,它就会完全控制更新旧的聚合,而且清理旧的聚合去限制中间状态数据的大小。从Spark 2.1开始,我们已经开始支持水印(watermarking ),它允许用户确定延迟的阈值,允许引擎相应地删除旧的状态。

1、基于事件-时间的窗口操作

 在滑动的事件-时间窗口上的聚合对于结构化流是简单的,非常类似于分组聚合。在分组聚合中,聚合的值对用户确定分组的列保持唯一的。在基于窗口的聚合中,聚合的值对每个窗口的事件-时间保持唯一的。

         修改我们前面的单词计数的例子,现在当产生一行句子时,附件一个时间戳。我们想每5分钟统计一次10分钟内的单词数。例如,12:00 - 12:10, 12:05 - 12:15, 12:10 - 12:20等。注意到12:00 - 12:10是一个窗口,表示数据12:00之后12:10之前到达。比如12:07到达的单词,这个单词应该在12:00 - 12:10和12:05 - 12:15两个窗口中都要被统计。
 

基于事件-时间窗口的单词统计代码:


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值