Вот как выглядят мои потоковые данные:
time | id | group
---- | ---| ---
1 | a1 | b1
2 | a1 | b2
3 | a1 | b3
4 | a2 | b3
Рассмотрим все примеры выше в нашем окне.Мой вариант использования получает последний отдельный идентификатор.
Мне нужно, чтобы вывод был таким, как показано ниже:
time | id | group
---- | ---| ---
3 | a1 | b3
4 | a2 | b3
Как мне добиться этого во Flink?
Я в курсеоконной функции WindowFunction
.Тем не менее, я не могу обернуться, делая это.
Я пробовал это просто для того, чтобы получить отличные идентификаторы.Как я могу расширить эту функцию для моего варианта использования?
class DistinctGrid extends WindowFunction[UserMessage, String, Tuple, TimeWindow] {
override def apply(key: Tuple, window: TimeWindow, input: Iterable[UserMessage], out: Collector[String]): Unit = {
val distinctGeo = input.map(_.id).toSet
for (i <- distinctGeo) {
out.collect(i)
}
}
}