如何基于第一个(按事件时间戳)键控事件创建窗口

ehxuflar  于 2021-06-26  发布在  Flink
关注(0)|答案(0)|浏览(242)

我正在使用flink的datastreamapi来处理带有翻滚窗口的键控流。
简化问题如下:
输入事件对象示例:

{timestamp:1462363362000, user_id:1, country:US, mark:50}
{timestamp:1462363361000, user_id:1, country:US, mark:40}
{timestamp:1462363368000, user_id:1, country:US, mark:30}
{timestamp:1462363368000, user_id:2, country:US, mark:200}
{timestamp:1462363367000, user_id:2, country:US, mark:300}

我使用assigntimestamp和水印来使用事件时间戳
我使用用户id字段键入数据
.

KeyedStream<Event, Tuple> keyedStream = eventsStream
.assignTimestampsAndWatermarks(new MessageTimestampExtractor())
.keyBy("user_id");

现在,我有了键控数据,我希望根据最早的事件的时间戳有10分钟的窗口,然后在该窗口上执行某种聚合。
如何创建静态大小(10分钟)的窗口,该大小将根据该窗口上该用户标识的第一个开始,这意味着当窗口结束并再次看到用户标识时,将创建一个新窗口。
我发现唯一能回答类似要求(但不完全是我需要的)的方法是使用事件时间会话窗口(在写这个问题的时候不稳定,flink 1.1-https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/windows.html)
你知道怎样才能做到吗?
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题