为了账号安全,请及时绑定邮箱和手机立即绑定

Structured Streaming中,如果trigger触发时前一批数据还没处理完怎么办?

标签:
Spark

以下内容摘自论文《Structured Streaming:A Declarative API for Real-time Applications in Apache Spark》——7.3节

自适应批处理:流应用偶尔会经历大的数据积压。例如,两个数据中心之间的网络性能下降会暂时延迟数据的传输,或者可能只是简单的用户活动激增。在这些情况下,Structured Streaming为了跟上输入流,会执行更长时间。这不会对延迟的影响很大,考虑到数据已经积压,这会让系统更快的跟上数据输入的速度。在云环境中,操作可以临时向集群添加额外的节点。

以下内容摘自Databricks博客《Introducing Low-latency Continuous Processing Mode in Structured Streaming in Apache Spark 2.3》

webp

image.png


在这种体系结构中,driver将检查点保存到WAL日志中,该日志可以用于重新启动查询。请注意,下一个micro-batch中要处理的范围偏移量将在其开始之前保存在日志中,以便获得确定性的重新执行和end-to-end语义。因此,source上可用的记录可能必须等待当前micro-batch处理完成,然后记录其偏移量,并在下一个micro-batch中进行处理。

经过实验验证:

设定trigger的触发时间为100ms,不断的对source写入数据,可以发现前一个trigger触发的数据批次计算job如果没有处理完,后一个job不会启动,不会并行的去执行job。
每个trigger触发时会启动一个新的job计算当前批次数据。


webp

image.png



作者:阿猫阿狗Hakuna
链接:https://www.jianshu.com/p/bc626390cf48


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消