Hi Paul,
good to hear that the windowing works for you.

With the key based state I’m afraid you found a bug. The problem is that the 
state backend is not properly set to the right key when the window is 
evaluated. I will look into fixing this ASAP before the 0.10 release.

Cheers,
Aljoscha
> On 21 Oct 2015, at 19:32, Hamilton, Paul <paul.hamilto...@sap.com> wrote:
> 
> Hi Aljoscha,
> 
> Thanks a lot for your Trigger implementation, definitely helped provide
> some direction.  It appears to be working well for our use case.  One
> thing I have noticed now that I have pulled the state API changes in is
> that key based state within a window function does not appear to be
> working.  Perhaps I am not using it correctly now that the API has
> changed.  Previously we had done something like this within the
> RichWindowFunction:
> 
> @Override
>       public void open(final Configuration parameters) throws Exception {
>   state = getRuntimeContext().getOperatorState("state", new StatePojo(),
> true);
>       }
> 
> Based on the API changes I switched it to:
> 
> @Override
> public void open(final Configuration parameters) throws Exception {
>   state = getRuntimeContext().getKeyValueState("state", StatePojo.class,
> new StatePojo());
> }
> 
> 
> But the state doesn’t seem to be partitioned based on the key.  I haven’t
> had much time to play around with it, so its certainly possible that I
> messed something up while refactoring to the API change.  I will look at
> it further when I get a chance, but if you have any thoughts they are much
> appreciated.
> 
> 
> Thanks,
> Paul Hamilton
> 
> 
> On 10/17/15, 6:39 AM, "Aljoscha Krettek" <aljos...@apache.org> wrote:
> 
>> Hi Paul,
>> it’s good to see people interested in this. I sketched a Trigger that
>> should fit your requirements:
>> https://gist.github.com/aljoscha/a7c6f22548e7d24bc4ac
>> 
>> You can use it like this:
>> 
>> DataStream<> input = …
>> DataStream<> result = input
>> .keyBy(“session-id”)
>> .window(GlobalWindows.create())
>> .trigger(new SessionTrigger(timeout, maxElements))
>> .apply(new MyWindowFunction())
>> 
>> The Trigger uses the new state API that I’m currently introducing in a
>> new Pull Request. It should be merged very soon, before the 0.10 release.
>> 
>> This implementation has one caveat, though. It cannot deal with elements
>> that belong to different sessions that arrive intermingled with other
>> sessions. The reason is that Flink does not yet support merging the
>> windows that the WindowAssigner assigns as, for example, the Cloud
>> Dataflow API supports. This means that elements cannot be assigned to
>> session windows, instead the workaround with the GlobalWindow has to be
>> used. I want to tackle this for the release after 0.10, however.
>> 
>> Please let us know if you need more information. I’m always happy to help
>> in these interesting cases at the bleeding edge of what is possible. :-)
>> 
>> Cheers,
>> Aljoscha
>> 
>>> On 16 Oct 2015, at 19:36, Hamilton, Paul <paul.hamilto...@sap.com>
>>> wrote:
>>> 
>>> Hi,
>>> 
>>> I am attempting to make use of the new window APIs in streaming to
>>> implement a session based window and am not sure if the currently
>>> provided
>>> functionality handles my use case.  Specifically what I want to do is
>>> something conceptually similar to a ³Sessions.withGapDuration(Š)² window
>>> in Google DataFlow.
>>> 
>>> Assuming the events are keyed by session id.  I would like to use the
>>> event time and the watermarking functionality to trigger a window after
>>> the ³end of a session² (no events for a given session received within x
>>> amount of time).  With watermarking this would mean trigger when a
>>> watermark is seen that is > (the time of the last event + session
>>> timeout). Also I want to perform an early triggering of the window
>>> after a
>>> given number of events have been received.
>>> 
>>> Is it currently possible to do this with the current combination of
>>> window
>>> assigners and triggers?  I am happy to write custom triggers etc, but
>>> wanted to make sure it wasn¹t already available before going down that
>>> road.
>>> 
>>> Thanks,
>>> 
>>> Paul Hamilton
>>> Hybris Software
>>> 
>>> 
>> 
> 

Reply via email to