[ 
https://issues.apache.org/jira/browse/FLINK-8560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16360414#comment-16360414
 ] 

Piotr Nowojski commented on FLINK-8560:
---------------------------------------

[~phoenixjiangnan] why would we have to keep all of the keys in the memory? Can 
not we have in KeyedProcessOperator:
{code:java}
@Override
public void onEventTime(InternalTimer<K, VoidNamespace> timer) throws Exception 
{
   collector.setAbsoluteTimestamp(timer.getTimestamp());
   onTime(timer, TimeDomain.EVENT_TIME);
}

@Override
public void onProcessingTime(InternalTimer<K, VoidNamespace> timer) throws 
Exception {
   collector.eraseTimestamp();
   onTime(timer, TimeDomain.PROCESSING_TIME);
}

private void onTime(InternalTimer<K, VoidNamespace> timer, TimeDomain 
timeDomain) throws Exception 
{ 
  Supplier<K> currentKeyAccessor = () -> (K) getCurrentKey();
  onTimerContext.reinitialize(currentKeyAccessor, timeDomain, timer);
  userFunction.onTimer(timer.getTimestamp(), onTimerContext, collector);
  onTimerContext.reset(); 
}{code}
 

Key would be only accessed when a user specifically asks for it, thus it 
shouldn't cost us any thing.

 

 

 

> Access to the current key in ProcessFunction after keyBy()
> ----------------------------------------------------------
>
>                 Key: FLINK-8560
>                 URL: https://issues.apache.org/jira/browse/FLINK-8560
>             Project: Flink
>          Issue Type: Wish
>          Components: DataStream API
>            Reporter: Jürgen Thomann
>            Assignee: Bowen Li
>            Priority: Minor
>
> Currently it is required to store the key of a keyBy() in the processElement 
> method to have access to it in the OnTimerContext.
> This is not so good as you have to check in the processElement method for 
> every element if the key is already stored and set it if it's not already set.
> A possible solution would adding OnTimerContext#getCurrentKey() or a similar 
> method. Maybe having it in the open() method could maybe work as well.
> http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Getting-Key-from-keyBy-in-ProcessFunction-tt18126.html



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to