【问题标题】:Flink event-time session windows with max total time具有最大总时间的 Flink 事件时间会话窗口
【发布时间】:2017-12-14 19:20:51
【问题描述】:

我想知道是否可以创建类似于以下内容的WindowAssigner

EventTimeSessionWindows.withGap(Time.seconds(1L))

除了我不希望窗口在每个元素的事件时间中保持增长。我希望在收到的第一个元素(对于该键)处定义窗口的开头,并在 1 秒后准确结束,无论有多少元素在那一秒内到达。

所以假设它可能看起来像这样:

EventTimeSessionWindows.withMax(Time.seconds(1L))

谢谢!

【问题讨论】:

    标签: scala apache-flink flink-streaming


    【解决方案1】:

    此用例没有内置窗口。

    但是,您可以使用GlobalWindow 来实现这一点,它收集所有传入的元素,Trigger 在接收到元素并且窗口为空(即第一个元素或第一个元素)时注册一个计时器窗户被清洗后。窗口收集新元素,直到计时器触发。此时,窗口将被评估并清除。

    【讨论】:

    • 该计时器是否必须是 processingTime 计时器而不是 eventTime 计时器?否则,如果我们收到一个键的 1 个元素,然后再没有其他元素,那么没有其他元素会触发我假设的触发器的 onEventTime,并且触发器永远不会触发?
    • 事件时间计时器由watermarks 触发,对所有键都是全局的。只要您有取得进展的水印,计时器就会触发。因此,您可以使用适合您用例的任何计时器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2023-04-08
    相关资源
    最近更新 更多