2017-04-01 2 views
0

Ich verwende Fenster im Sturm Implementierung Schiebe:Wie bekomme ich die aktuelle Fensterzeit im Schiebefenster?

From Here

Dies ist meine Topologie:

public static void main(String[] args) throws Exception { 
    TopologyBuilder builder = new TopologyBuilder(); 

    builder.setSpout("rabbitSpout", new RabbitMQSpout()); 
    builder.setBolt("filterBolt", new FilteringBolt()).shuffleGrouping("rabbitSpout"); 

    builder.setBolt("HourStatisticsBolt", new SlidingWindowStatisticsBolt() 
      .withWindow(new BaseWindowedBolt.Duration(60, TimeUnit.MINUTES), 
        new BaseWindowedBolt.Duration(10, TimeUnit.SECONDS)) 
      .withTimestampField("timestamp")).shuffleGrouping("filterBolt"); 

In meinem SlidingWindowStatisticsBolt Methode ausführen möchte ich den Zeitstempel erhalten, an dem Windows-Start oder enden. In meinem Bolzen wie bekomme ich die Fensterlänge und die Schiebedauer?

Antwort

2

Da Sie die Ereigniszeit verwenden (withTimestampField), werden die Fenster basierend auf periodischen Wasserzeichen berechnet. Momentan wird die Fensteranfangs-/Endzeit im TupleWindow nicht angezeigt.

Im aktuellen Master Zweig des Sturms hat die TupleWindow eine getTimestamp Methode, die das Fenster Ende Zeitstempel zurück und arbeitet sowohl für die Verarbeitung und Ereigniszeit basierend Fenster. Dies wird in der zukünftigen Version von storm (Version 2.0) verfügbar sein. Wenn Sie möchten, dass dies zurück portiert und in der nächsten Version von 1.x verfügbar gemacht wird, können Sie eine JIRA here

einreichen
Verwandte Themen