您的位置:首页 > 游戏 > 游戏 > app公众号推广_网站建设与制作布局_百度百科官网首页_2023重大新闻事件10条

app公众号推广_网站建设与制作布局_百度百科官网首页_2023重大新闻事件10条

2025/1/15 4:43:49 来源:https://blog.csdn.net/riemann_/article/details/136273212  浏览:    关键词:app公众号推广_网站建设与制作布局_百度百科官网首页_2023重大新闻事件10条
app公众号推广_网站建设与制作布局_百度百科官网首页_2023重大新闻事件10条

一、前言

在Flink 1.11之前的版本中,提供了两种生成水印(Watermark)的策略,分别是AssignerWithPunctuatedWatermarks和AssignerWithPeriodicWatermarks,这两个接口都继承自TimestampAssigner接口。

用户想使用不同的水印生成方式,则需要实现不同的接口,但是这样引发了一个问题,对于想给水印添加一些通用的、公共的功能则变得复杂,因为我们需要给这两个接口都同时添加新的功能,这样还造成了代码的重复。

所以为了避免代码的重复,在Flink 1.11 中对Flink的水印生成接口(WatermarkStrategy)进行了重构,废弃了TimestampAssigner生成水印策略。

新版本API内置的watermark策略:

  • 单调递增的watermark生成策略,也就是紧跟最大事件时间(完全不容忍乱序)

    WatermarkStrategy.forMonotonousTimestamps();
    
  • 允许乱序的watermark生成策略,最大事件时间 - 容错时间

    WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofSeconds(3));
    
  • 自定义的watermark生成策略

    WatermarkStrategy.forGenerator(new WatermarkGenerator(){...})
    

二、Watermark应用代码结构

WatermarkStrategy在Flink中有两种使用方式:

  • 在数据源上使用
  • 在非数据源的操作之后使用

推荐使用第一种方式,因为数据源可以利用watermark生成逻辑中有关分片/分区的信息。使用这种方式可以更加精准的跟踪watermark,整体的watermark生成将更加精确,直接在数据源指定WatermarkStrategy必须使用特定的数据源接口,例如与kafka链接,使用kafka Connerctor,仅当无法直接在数据源上设置策略是时才使用第二种方式。

//第一种 直接在kafka上使用
FlinkKafkaConsumer<MyType> kafkaSource = new FlinkKafkaConsumer<>("myTopic", schema, props);
kafkaSource.assignTimestampsA

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com