2015-11-02 1 views
5

पर एकाधिक समेकन लागू करना मेरे पास कुछ डेटा आईडी, फ्लोट, फ्लोट, फ्लोट के रूप में आ रहा है। मैं फ़ील्ड को न्यूनतम(), अधिकतम() और योग() को क्रमशः आईडी मान से समूह करना चाहता हूं।झपकी: खिड़की वाली धारा

flatMap का उपयोग करते हुए मैं एक Tuple4 बिट्स के साथ है, लेकिन मैं कैसे अगले कदम को भेजने के लिए यकीन नहीं है।

मैं क्या है:

dataStream.flatMap(new mapper()).keyBy(0) 
    .timeWindowAll(Time.of(5, TimeUnit.SECONDS)).min(1) 
    .timeWindowAll(Time.of(5, TimeUnit.SECONDS)).sum(2) 
    .timeWindowAll(Time.of(5, TimeUnit.SECONDS)).sum(3) 
    .map(new printstuff()); 

इस इस संभाल करने के लिए सही तरीका है? या मुझे keyBy के साथ अपने स्वयं के बयान में प्रत्येक timeWindowAll डालने की आवश्यकता है और आगे?

उत्तर

5

एकाधिक समेकन कार्यों की श्रृंखला डेटास्ट्रीम एपीआई में अभी तक समर्थित नहीं है।

अपने उदाहरण में, आप तीन अलग-अलग 5-सेकंड विंडो बनाते हैं जिनमें से प्रत्येक एक एकल संयोजन लागू करता है। शायद यह नहीं है कि आप क्या करना चाहते हैं। मैं एक कस्टम ReduceFunction लागू करता हूं जो एक ही विंडो में एक साथ सभी समेकन करता है। उदाहरण के लिए DataStream documentation में विंडो को कम करें।