Hi Jürgen,

> On Feb 2, 2018, at 6:24 AM, Jürgen Thomann <juergen.thom...@innogames.com 
> <mailto:juergen.thom...@innogames.com>> wrote:
> 
> Hi,
> 
> I'm currently using a ProcessFunction after a keyBy() and can't find a way to 
> get the key.

Doesn’t your keyBy() take a field (position, or name) to use as the key?

So then that same field contains the key in the 
ProcessFunction.processElement(in, …) parameter, yes?

> I'm currently storing it in a ValueState<String> within processElement

If you’re using a ValueState, then there’s one of those for each unique key, 
not one for the operation.

I.e. the ValueState for key = “one” is separate from the ValueState for key = 
“two”.

You typically store the key in the state so it’s accessible in the onTimer 
method.

> and set it all the time, so that I can access it in onTimer(). Is there a 
> better way to get the key? We are using Flink 1.3 at the moment.

The ValueState (what you used in processElement) that you’re accessing in the 
onTimer() method is also scoped by the current key.

So assuming you stored the key in the state inside of your processElement() 
call, then you should have everything you need.

— Ken

PS - Check out 
https://www.slideshare.net/dataArtisans/apache-flink-training-datastream-api-processfunction
 
<https://www.slideshare.net/dataArtisans/apache-flink-training-datastream-api-processfunction>

--------------------------
Ken Krugler
http://www.scaleunlimited.com <http://www.scaleunlimited.com/>
custom big data solutions & training
Hadoop, Cascading, Cassandra & Solr



Reply via email to