Hi Shuwen,

> When to call close() ? After every element processed? Or on 
> ProcessFunction.close() ? Or never to use it? 


IMO, the #close() function is used to manage the lifecycle of #Collector 
instead of a single element. I think it should not be called in user function 
unless you have some special use cases(no use case comes to my mind).


> If it's been closed already, can the collector collect() anymore data?


No. if it’s closed, it usually means the writer is closed or maybe the operator 
is closed.


> If processElement received a message but consider it as discard and does not 
> call collect(), will this block checkpoint's barrier until next element was 
> sent by collect() ?


No. 




Best,
Jiayi Liao




 Original Message 
Sender: shuwen zhou<jaco...@gmail.com>
Recipient: user<user@flink.apache.org>
Date: Friday, Nov 29, 2019 12:29
Subject: ProcessFunction collect and close, when to use?


Hi Community,
In ProcessFunction class, ProcessElement function, there is a Collector that 
has 2 method: collect() and close(). I would like to know:


1. When to call close() ? After every element processed? Or on 
ProcessFunction.close() ? Or never to use it? If it's been closed already, can 
the collector collect() anymore data?
2. If processElement received a message but consider it as discard and does not 
call collect(), will this block checkpoint's barrier until next element was 
sent by collect() ?




-- 

Best Wishes,
Shuwen Zhou

Reply via email to