我正在使用Flink的DataStream API来处理带有翻滚窗口的键控流。
简化问题如下:
输入事件对象示例:
{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}
KeyedStream<Event, Tuple> keyedStream = eventsStream
.assignTimestampsAndWatermarks(new MessageTimestampExtractor())
.keyBy("user_id");
现在我有了键控数据,我希望根据事件的时间戳最早的事件有10分钟的窗口,然后在该窗口上执行某种聚合。
如何创建静态大小(10分钟)的窗口,该窗口将根据该窗口上该user_id的第一个开始,这意味着当窗口结束并再次看到user_id时,将创建一个新窗口。
我发现的唯一一件事是回答类似的要求(但不完全是我需要的那个)是使用事件时间会话窗口(在撰写这个问题时不稳定,Flink 1.1 - {{3} })
知道如何实现它吗?
由于