Hi all,Thanks a lot for your valuable suggestions. I am trying to implement the 
logic of creating a custom trigger with a GlobalWindow which fires the window 
in one minute for the first time and every five seconds after that, if this 
logic works I will change it to one hour and five minutes respectively.
@Fabian, it might not be very trivial to implement but is required in my 
particular use case as I need the data from the first one hour to start 
operating on, after that I want to append data in every five minutes.
In my custom trigger, the code looks like this:
@Override
    public TriggerResult onElement(Object element, long timestamp, W window, 
TriggerContext ctx) throws Exception {
                
        if(flag == false){
            if(i<60){
                Thread.sleep(1000);
                System.out.println("flag: "+flag+" count: "+i);
                i++;
                return TriggerResult.CONTINUE;
            }
            flag = true;
            return TriggerResult.FIRE;
        }else{
            if(j<5){
                Thread.sleep(1000);
                System.out.println("flag: "+flag+" count: "+j);
                j++;
                return TriggerResult.CONTINUE;
            }
            j=0;
            return TriggerResult.FIRE;
        }
            
    }
 Here, flag is a static boolean which is false for the first run and true for 
the next runs. i and j are static counters initialized at 0. However, when I 
run the stream, only one or two results (one or two keys) are coming in the 
output every time the Window is fired. Can you figure out why this is 
happening? How can I correct this logic so that all the keys are considered.

Sample of the output I am getting:

flag: false count: 0
flag: false count: 1
flag: false count: 2
flag: false count: 3
flag: false count: 4
flag: false count: 5
flag: false count: 6
flag: false count: 7
flag: false count: 8
flag: false count: 9
flag: false count: 10
...flag: false count: 58
flag: false count: 58
3> (52,"mokshda",85.929)
flag: true count: 60
flag: true count: 61
flag: true count: 0
flag: true count: 1
flag: true count: 2
flag: true count: 3
flag: true count: 4
1> (2,"poorvi",23.15)
flag: true count: 0
flag: true count: 1
flag: true count: 2
flag: true count: 3
flag: true count: 3
3> (52,"mokshda",85.930)
1> (2,"poorvi",23.15)
flag: true count: 0
flag: true count: 1
flag: true count: 2...

Thanks and Regards,Piyush Shrivastava
http://webograffiti.com
 

    On Wednesday, 20 April 2016 10:26 PM, Aljoscha Krettek 
<aljos...@apache.org> wrote:
 

 Just to clarify, the state of a Trigger on GlobalWindows is still local to the 
key of the element that is in the window(s).
On Wed, 20 Apr 2016 at 18:11 Fabian Hueske <fhue...@gmail.com> wrote:

Hi Piyush,

that's not trivial to implement. You can only do that with a so-called 
GlobalWindow, i.e., a window which receives all elements of a partition, and a 
custom trigger which has state to decide whether it has triggered the first 
window or not. It won't work with a CountTrigger.

Best, Fabian
2016-04-20 14:20 GMT+02:00 Piyush Shrivastava <piyush...@yahoo.co.in>:

Hi Fabian,
Thanks for the information. I also quickly want to ask that if I implement a 
custom trigger that fires in one hour for the first time and then every five 
minutes, what all functions do I need to use?I am considering creating my own 
trigger referring the code 
here:https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/windowing/triggers/CountTrigger.java
What changes do I need to make? Is it even possible to do this?
 Thanks and Regards,Piyush Shrivastava
http://webograffiti.com
 

    On Wednesday, 20 April 2016 4:59 PM, Fabian Hueske <fhue...@gmail.com> 
wrote:
 

 Hi Piyush,

if you explicitly set a trigger, the default trigger of the window is replaced. 
In your example, the time trigger is replaced by the count trigger, i.e., the 
window is only evaluated after the 100th element was received.

This blog post discusses windows and triggers [1].

Best, Fabian

[1] http://flink.apache.org/news/2015/12/04/Introducing-windows.html

2016-04-20 13:20 GMT+02:00 Piyush Shrivastava <piyush...@yahoo.co.in>:

I wanted to know how Windows and Triggers work in Flink. I am creating a time 
window of 20 seconds and a count trigger of 100.
stream.keyBy(0)
             .timeWindow(Time.seconds(20))
             .trigger(CountTrigger.of(100))
In this case, when will my window get triggered? When 20 seconds has passed, 
100 messages are passed? 

Thanks and Regards,Piyush Shrivastava
http://webograffiti.com




   




  

Reply via email to