开发者社区> 问答> 正文

关于Flink水位线与时间戳分配的疑问

您好: 我是目前正在自学Flink以完成毕业设计的计算机专业学生。目前对Flink时间戳与水位线的代码有很多不确定且找不到权威解答的疑问,自己调试程序也因为之前没有Flink经验而对Debug变量窗口中各种复杂的结构找不到头绪。因此,抱着试一试的想法尝试通过这个邮箱寻求解答。 下面两个图片是一个分配器

我有一下几个疑问:1.是不是我们只要调用env.addSource(...).assignTimestampsAndWatermarks(new PeriodicAssigner)就能分配时间戳和水位线了呢?但是我看不到这个类中有分配时间戳的行为,好像只是和获取时间戳和分配水位线相关。 2.maxTs这个变量为什么能够从Long.MinValue中观察到最大的时间戳呢? 3.这段代码的解释中提到“该分配器会返回一个时间戳等于最大时间戳减去1分钟容忍间隔的水位线”,这里所说的容忍间隔的目的是什么呢?

感谢您的回复,非常感谢您的点拨!*来自志愿者整理的flink

展开
收起
雪哥哥 2021-12-05 13:02:24 815 0
1 条回答
写回答
取消 提交回答
    1. 可以这么使用这个方法:

    ···

    input.assignTimestampsAndWatermarks( WatermarkStrategy. forBoundedOutOfOrderness(Duration.ofMillis(10)) .withTimestampAssigner((event, timestamp) -> 42L));

    ··· TimestampAssigner 会从输入的event上读取数据 并由watermark generator 决定输出对应的watermark.

    1. 容忍是由于数据会乱序.*来自志愿者整理的flink
    2021-12-05 17:54:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载