手记

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

以下内容摘自论文《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》

image.png


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

经过实验验证:

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


image.png



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


0人推荐
随时随地看视频
慕课网APP