Spark结构化流中的加水位线方法

网友投稿 357 2022-11-07

Spark结构化流中的加水位线方法

什么是水位线?

加水位线是一种有用的方法,可帮助流处理引擎处理延迟。 基本上,水印是一个阈值,用于指定系统等待延迟事件的时间。 如果到达事件位于水位线之内,它将用于更新查询。 否则,如果它早于水位线,它将被丢弃,并且流引擎不会对其进行进一步处理。

> Flooding watermarks

如何使用它?

自Spark 2.1起,水位线被引入到结构化流API中。 您可以通过将withWatermark-Operator添加到查询中来启用它:

值得一提的是,查询的输出模式必须设置为"追加"(默认)或"更新"。完全模式不能与设计中的水印结合使用,因为它需要所有 要保存的数据,用于将整个结果表输出到接收器。

可以在这里找到如何在简单的Spark结构化流应用程序中使用该概念的快速演示-它是字数统计(对NLP进行了一些小的增强),还有其他:D

但是,为什么我要关心?

为了解决此问题,必须保留聚合状态。 如果发生延迟事件,则可以重新处理查询。 但这意味着所有聚合的状态必须无限期地保持,这也导致内存使用量也无限期地增长。 除非系统具有无限的资源(即无限的预算),否则在现实世界中这是不切实际的。 因此,加水位线是一个有用的概念,可以通过设计约束系统并防止其在运行时爆炸。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:聚类的算法实现 | 【亲证有效】
下一篇:圆柱的触测点如何构成单个圆?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~