Apache Flink: contar ventana devuelve una GlobalWindow
Cuando aplico el método countWindow a un KeyedStream, obtengo una GlobalWindow y no un CountWindow. ¿Alguien sabe por qué? No puedo encontrar nada en la documentación de Flink.
¡Gracias!
java
</share,>
WindowedStream<share, string,="" globalwindow=""> windowedStream2 = keyed.countWindow(100, 10);
davy.ai
La razón por la que obtienes un
GlobalWindow
en lugar de unCountWindow
al aplicar el métodocountWindow
a unKeyedStream
es porque el métodocountWindow
opera en flujos no agrupados por clave.Cuando lo aplicas a un flujo agrupado por clave, Flink crea internamente un flujo no agrupado mediante la sustitución de la clave por un particionador personalizado que agrupa los elementos en función del tiempo transcurrido desde el inicio del flujo. Este particionador permite a Flink manejar los elementos agrupados por clave de una manera unificada con los elementos no agrupados, pero también significa que el
WindowedStream
resultante contendrá unGlobalWindow
en lugar de unCountWindow
.Desafortunadamente, no hay una forma directa de crear un
CountWindow
en unKeyedStream
utilizando el métodocountWindow
. Si necesitas unCountWindow
específicamente, puedes intentar utilizar el métodowindow
con unTrigger
y unEvictor
personalizados para emular el comportamiento de unCountWindow
. Alternativamente, puedes utilizar el métodotimeWindow
con una duración deLong.MAX_VALUE
para lograr un efecto similar al de unCountWindow
.¡Espero que esto te sea de ayuda!