Re: MergingWindow

2018-01-03 Thread Aljoscha Krettek
Yes, this is a very good description!

To see this in action you can run MergingWindowSetTest and comment out the 
check in MergingWindowSet, then you will see test failures and can trace what 
situations lead to problematic behaviour without that check.

> On 29. Dec 2017, at 15:07, jincheng sun  wrote:
> 
> Hi  aitozi,
> 
> `MergingWindowSet` is a Utility, used for keeping track of merging Windows 
> when using a MergingWindowAssigner in a WindowOperator. 
> 
> In flink  `MergingWindowAssigner`  only used for SessionWindow. The 
> implementations of  `MergingWindowAssigner` are `EventTimeSessionWindows` and 
> `ProcessingTimeSessionWindows`. As we know Session window depends on the 
> element of the time gap to split the window, if you encounter out-of-order 
> elements, there is a merge window situation.  
> 
> 
> In the `processElement` method of WindowOperator, when adding the new window 
> might result in a merge. the merge logic is in the `addWindow` method of 
> `MergingWindowSet`. The snippet you mentioned is in that method. To 
> understand the code snippet above, we must understand the collation logic of 
> the merge window。 Let me cite a merge example to illustrate the merging 
> logic, if we have two windows WinA, WinB, when WinC is added, we find WinA, 
> WinB, WinC should be merged. So, in this time WinC is new Window WinA and 
> WinB are in `MergingWindowSet.mapping`, the `mapping` is Map, Mapping 
> from window to the window that keeps the window state. When we are 
> incrementally merging windows starting from some window we keep that starting 
> window as the state window to prevent costly state juggling. As shown below:
> 
> 
> ​
> Now we  know the logic of merge window, and we talk about the logic of you 
> mentioned above:
> if (!(mergedWindows.contains(mergeResult) && mergedWindows.size() == 1)) {
> mergeFunction.merge(mergeResult,
> mergedWindows,
> this.mapping.get(mergeResult),
> mergedStateWindows);
> }
> 
> This code is guarantee that don't merge the new window itself, it never had 
> any state associated with it i.e. if we are only merging one pre-existing 
> window into itself without extending the pre-exising window.
> 
> I am not sure if the explanation is clear, but I hope to be helpful to you. 
> :) 
> And welcome anybody feedback... :)
> 
> Best, Jincheng
> 
> 2017-12-27 16:58 GMT+08:00 Ufuk Celebi  >:
> Please check your email before sending it the next time as three
> emails for the same message is a little spammy ;-)
> 
> This is internal code that is used to implement session windows as far
> as I can tell. The idea is to not merge the new window as it never had
> any state associated with it. The general idea of merging windows is
> to keep one of the original windows as the state window, i.e. the
> window that is used as namespace to store the window elements.
> Elements from the state windows of merged windows must be merged into
> this one state window.
> 
> For more details, this should be directed to the dev mailing list.
> 
> – Ufuk
> 
> On Tue, Dec 26, 2017 at 4:58 AM, aitozi  > wrote:
> > Hi,
> >
> > i cant unserstand usage of this snippest of the code in
> > MergingWindowSet.java, can anyone explain this for me ?
> >
> >
> > if (!(mergedWindows.contains(mergeResult) && mergedWindows.size() == 1)) {
> > mergeFunction.merge(mergeResult,
> > mergedWindows,
> > 
> > this.mapping.get(mergeResult),
> > mergedStateWindows);
> > }
> >
> >
> >
> > --
> > Sent from: 
> > http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/ 
> > 
> 



Re: MergingWindow

2017-12-29 Thread jincheng sun
Hi  aitozi,

`MergingWindowSet` is a Utility, used for keeping track of merging Windows
when using a MergingWindowAssigner in a WindowOperator.

In flink  `MergingWindowAssigner`  only used for SessionWindow. The
implementations of  `MergingWindowAssigner` are `EventTimeSessionWindows`
and `ProcessingTimeSessionWindows`. As we know Session window depends on
the element of the time gap to split the window, if you encounter
out-of-order elements, there is a merge window situation.


In the `processElement` method of WindowOperator, when adding the new
window might result in a merge. the merge logic is in the `addWindow`
method of `MergingWindowSet`. The snippet you mentioned is in that method.
To understand the code snippet above, we must understand the collation
logic of the merge window。 Let me cite a merge example to illustrate the
merging logic, if we have two windows WinA, WinB, when WinC is added, we
find WinA, WinB, WinC should be merged. So, in this time WinC is new Window
WinA and WinB are in `MergingWindowSet.mapping`, the `mapping` is Map, Mapping from window to the window that keeps the window state. When we
are incrementally merging windows starting from some window we keep that
starting window as the state window to prevent costly state juggling. As
shown below:


​
Now we  know the logic of merge window, and we talk about the logic of you
mentioned above:

> if (!(mergedWindows.contains(mergeResult) && mergedWindows.size() == 1)) {
> mergeFunction.merge(mergeResult,
> mergedWindows,
>
> this.mapping.get(mergeResult),
> mergedStateWindows);
> }


This code is guarantee that don't merge the new window itself, it never had
any state associated with it i.e. if we are only merging one pre-existing
window into itself without extending the pre-exising window.

I am not sure if the explanation is clear, but I hope to be helpful to you.
:)
And welcome anybody feedback... :)

Best, Jincheng

2017-12-27 16:58 GMT+08:00 Ufuk Celebi :

> Please check your email before sending it the next time as three
> emails for the same message is a little spammy ;-)
>
> This is internal code that is used to implement session windows as far
> as I can tell. The idea is to not merge the new window as it never had
> any state associated with it. The general idea of merging windows is
> to keep one of the original windows as the state window, i.e. the
> window that is used as namespace to store the window elements.
> Elements from the state windows of merged windows must be merged into
> this one state window.
>
> For more details, this should be directed to the dev mailing list.
>
> – Ufuk
>
> On Tue, Dec 26, 2017 at 4:58 AM, aitozi  wrote:
> > Hi,
> >
> > i cant unserstand usage of this snippest of the code in
> > MergingWindowSet.java, can anyone explain this for me ?
> >
> >
> > if (!(mergedWindows.contains(mergeResult) && mergedWindows.size() ==
> 1)) {
> > mergeFunction.merge(mergeResult,
> > mergedWindows,
> >
>  this.mapping.get(mergeResult),
> > mergedStateWindows);
> > }
> >
> >
> >
> > --
> > Sent from: http://apache-flink-user-mailing-list-archive.2336050.
> n4.nabble.com/
>


Re: MergingWindow

2017-12-27 Thread Ufuk Celebi
Please check your email before sending it the next time as three
emails for the same message is a little spammy ;-)

This is internal code that is used to implement session windows as far
as I can tell. The idea is to not merge the new window as it never had
any state associated with it. The general idea of merging windows is
to keep one of the original windows as the state window, i.e. the
window that is used as namespace to store the window elements.
Elements from the state windows of merged windows must be merged into
this one state window.

For more details, this should be directed to the dev mailing list.

– Ufuk

On Tue, Dec 26, 2017 at 4:58 AM, aitozi  wrote:
> Hi,
>
> i cant unserstand usage of this snippest of the code in
> MergingWindowSet.java, can anyone explain this for me ?
>
>
> if (!(mergedWindows.contains(mergeResult) && mergedWindows.size() == 1)) {
> mergeFunction.merge(mergeResult,
> mergedWindows,
> this.mapping.get(mergeResult),
> mergedStateWindows);
> }
>
>
>
> --
> Sent from: 
> http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/


MergingWindow

2017-12-25 Thread aitozi
Hi,

i cant unserstand usage of this snippest of the code in
MergingWindowSet.java, can anyone explain this for me ?


if (!(mergedWindows.contains(mergeResult) && mergedWindows.size() == 1)) {
mergeFunction.merge(mergeResult,
mergedWindows,
this.mapping.get(mergeResult),
mergedStateWindows);
}



--
Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/


Mergingwindow

2017-12-25 Thread aitozi
Hi, 

i cant understand the usage of this snippest of this code , can anyone 
explain foe me ?  thanks 
  




--
Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/