2017-03-28 2 views
0

J'ai développé une application profilling travaille sur les données CDR (Call Detail Record) dans Apache Storm. Le but principal de l'application est l'extraction de l'appelant TotalCallCount et TotalCallDuration pendant un bloc de temps spécifié (dans chaque fenêtre). Pour profilling je veux utiliser la technique SlidingWindow.TupleWindow Début/Fin Heure dans Apache Storm

Pour comprendre, vous pouvez regarder l'image suivante SlidingWindow Image

Pour profilling je dois savoir quand TupleWindow a commencé et a pris fin . Je veux dire quel est l'horodatage de TupleWindow ou l'horodatage de SlidingWindow pour le début et la fin.

Même si j'ai recherché l'implémentation de Storm, je n'ai rien trouvé à ce sujet. Pourriez-vous m'aider sur la façon de le comprendre?

Merci beaucoup

Répondre

2

Si vous utilisez une version 1.x de la tempête apache, ces informations ne sont pas directement accessibles via le TupleWindow. Vous devrez le calculer manuellement. Par exemple.

public class MyBolt extends BaseWindowedBolt { 
    ... 
    long slidingInterval; 

    @Override 
    public BaseWindowedBolt withWindow(Duration windowLength, Duration slidingInterval) { 
     this.slidingInterval = slidingInterval.value; 
     return super.withWindow(windowLength, slidingInterval); 
    } 


    public void execute(TupleWindow inputWindow) { 
    long now = System.currentTimeMillis(); 
    long windowEnd = now; 
    long windowStart = now - slidingInterval; 
    ... 
    } 

Mais cela peut ne pas être assez simple dans tous les cas, surtout si vous avez des fenêtres de temps d'événement.

Dans la dernière branche maîtresse de tempête, le TupleWindow a une méthode getTimestamp qui renvoie l'horodatage de fin de fenêtre et fonctionne à la fois pour le traitement et les fenêtres basées sur les événements. Ce sera disponible dans la future version de storm (version 2.0). Il pourrait être reporté et rendu disponible dans les futures versions de Storm 1.x.