Hi Lian,

you are right that timers are not available in a ProcessWindowFunction but the state store can be accessed. So given that your window width is 1 min, you could maintain an additional state value for counting the minutes and updating your counter once this value reached 60.

Otherwise, I would recommend to use a process function and implement the windowing logic yourself if it is a simple windowing operation.

Btw if you are using a Long counter, I would say that chances are low that it will overflow. Also, have you considered using Flink's metric system? it might make custom metric clients unnecessary.

I hope this helps.

Regards,
Timo


On 22.09.20 02:02, Lian Jiang wrote:
Hi,

I have a window function with a window width of 1 min. I want to have an hourly counter which is reset every hour so it never overflows. There are multiple ways but none of them is straightforward:

StatsDClient instance =new NonBlockingStatsDClientBuilder()

int count = 0;

void incr() {
metricClient.count("mycounter",1,"mytag");

   count++;

}

void reset() {
metricClient.count("mycounter",-count,"mytag");

    count = 0;

}

As you can see, the code needs to maintain a "count" variable to reset 
mycounter.
Also since timer is not available in Window function, extra code is needed to 
reset mycounter every hour.
Is there an easier way for implementing hourly counter? Or it is not a concern 
that a counter will overflow?

Thanks

Lian




Reply via email to