2017-03-28 7 views
0

Apache Storm의 CDR (Call Detail Record) 데이터에서 프로파일 링 애플리케이션을 개발했습니다. 응용 프로그램의 주된 목적은 호출자 TotalCallCountTotalCallDuration을 지정된 시간 블록 (모든 창에서) 중에 추출하는 것입니다. profilling에 대해서는 SlidingWindow 기술을 사용하고 싶습니다. Apache Storm의 TupleWindow 시작/종료 시간

는 TupleWindow 시작하고 를 종료 할 때 내가 을 알 필요가 profilling를 들어 이미지 SlidingWindow Image

를 다음에서 볼 수 이해합니다. TupleWindow의 타임 스탬프 또는 SlidingWindow의 타임 스탬프가 시작과 끝이라는 것을 의미합니다.

스톰 구현을 검색해도 그 사실을 알 수는 없습니다. 어떻게 알아낼 수 있겠 어? 당신이 아파치 스톰의 1.x에서 릴리스를 사용하는 경우

이 정보가 TupleWindow를 통해 직접 액세스 할 수없는 당신에게

답변

2

대단히 감사합니다. 이것을 수동으로 계산해야합니다. 예 :

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; 
    ... 
    } 

특히 이벤트 시간대가있는 경우 특히 그렇진 않을 수 있습니다.

폭풍의 최신 마스터 브랜치에서 TupleWindow은 창 종료 시간 소인을 반환하고 처리 및 이벤트 시간 기반 창 모두에서 작동하는 getTimestamp 메서드를가집니다. 이 기능은 storm (2.0 릴리스)의 향후 릴리스에서 사용할 수 있습니다. 그것은 다시 이식 될 수 있으며 향후 Storm 1.x 릴리즈에서도 사용할 수 있습니다.