2012-09-26 11 views
7

मैं तूफान के साथ खेल रहा हूं, और मुझे आश्चर्य है कि तूफान एकीकरण पर (टम्बलिंग/स्लाइडिंग) विंडो आकार निर्दिष्ट करता है (यदि संभव हो)। जैसे अगर हम ट्विटर पर पिछले घंटे के लिए ट्रेंडिंग विषय खोजना चाहते हैं। हम कैसे निर्दिष्ट करते हैं कि बोल्ट को हर घंटे के परिणाम लौटाएंगे? क्या यह प्रत्येक बोल्ट के अंदर प्रोग्रामिक रूप से किया जाता है? या यह "खिड़की" निर्दिष्ट करने का कोई तरीका है?(ट्विटर) तूफान पर तूफान की खिड़की

उत्तर

17

अस्वीकरण: मैंने gakhov in his answer above द्वारा संदर्भित तूफान लेख के साथ रुझान विषय लिखा है।

मैं कहूंगा कि सबसे अच्छा अभ्यास तथाकथित tick tuples in Storm 0.8+ का उपयोग करना है। इनके साथ आप कुछ समय अंतराल (कहें, हर दस सेकंड या हर मिनट) पर अधिसूचित होने के लिए अपने स्वयं के स्पॉट/बोल्ट को कॉन्फ़िगर कर सकते हैं।

यहाँ एक सरल उदाहरण है कि प्रश्न में घटक कॉन्फ़िगर टिक tuples प्रति दस सेकंड में प्राप्त करें:

// in your spout/bolt 
@Override 
public Map<String, Object> getComponentConfiguration() { 
    Config conf = new Config(); 
    int tickFrequencyInSeconds = 10; 
    conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, tickFrequencyInSeconds); 
    return conf; 
} 

फिर आप "सामान्य" भेजे tuples भेद करने के लिए अपने टोंटी/बोल्ट के execute() विधि में एक सशर्त स्विच का उपयोग कर सकते हैं विशेष टिक tuples से। उदाहरण के लिए:

// in your spout/bolt 
@Override 
public void execute(Tuple tuple) { 
    if (isTickTuple(tuple)) { 
     // now you can trigger e.g. a periodic activity 
    } 
    else { 
     // do something with the normal tuple 
    } 
} 

private static boolean isTickTuple(Tuple tuple) { 
    return tuple.getSourceComponent().equals(Constants.SYSTEM_COMPONENT_ID) 
     && tuple.getSourceStreamId().equals(Constants.SYSTEM_TICK_STREAM_ID); 
} 

फिर से, मैं तूफान में यह कर कुछ दिन पहले के रूप में gakhov ने बताया के बारे में एक बहुत detailed blog post लिखा था (बेशर्म प्लग!)।

+0

हम एक समेकित फ़ंक्शन (बोल्ट) "ट्रिगरिंग" के लिए टिक टुपल्स का उपयोग करके समाप्त हो गए। धन्यवाद एक गुच्छा =) – gronnbeck

+0

आपका स्वागत है। :) –

+0

हाय माइकल, मैं इस बारे में सोच रहा हूं: जबकि तूफान चल रहा है, क्या मैं किसी भी तरह टिक टिकल की आवृत्ति को बदल सकता हूं? यदि हम कर सकते हैं, तो हम उस आवृत्ति को बदल सकते हैं जिस पर तूफान प्रवृत्त परिणामों का लॉग लिखता है, या यह खिड़की के आकार को बदल सकता है जिस पर तूफान विषय प्रवृत्ति की गणना कर रहा है। धन्यवाद! – user2895478

1

1 की समांतरता डिग्री के साथ एक नया स्पॉट जोड़ें, और इसे खाली सिग्नल छोड़ दें और फिर अगली बार तक अगली बार सोएं (सभी अगले ट्यूपल में किए गए)। फिर, सभी प्रासंगिक बोल्ट को सभी ग्रुपिंग का उपयोग करके उस स्पॉट पर लिंक करें, इसलिए उनके सभी उदाहरण एक ही सिग्नल प्राप्त करेंगे।

संबंधित मुद्दे