2016-02-08 8 views
6

मैं यह पता लगाने की कोशिश कर रहा हूं कि हम अपनी कुछ स्ट्रीमिंग डेटाफ्लो नौकरियों के लिए विंडो स्थिति कैसे "बीज" करते हैं। परिदृश्य है कि हमारे पास फोरम संदेशों की एक स्ट्रीम है, हम हर विषय के लिए प्रत्येक विषय के लिए संदेशों की चल रही गिनती को उत्सर्जित करना चाहते हैं, इसलिए हमारे पास एक वैश्विक विंडो के साथ एक स्ट्रीमिंग डेटाफ्लो नौकरी है और प्रत्येक बार एक विषय के लिए रिकॉर्ड आने के लिए ट्रिगर करता है अब तक सभी अच्छे हैं। लेकिन स्ट्रीम स्रोत से पहले, हमारे पास एक बड़ी फाइल है जिसे हम अपनी ऐतिहासिक गणना प्राप्त करने के लिए संसाधित करना चाहते हैं, क्योंकि विषय हमेशा के लिए रहते हैं, हमें स्ट्रीम स्रोत से आउटपुट को सूचित करने के लिए ऐतिहासिक गणना की आवश्यकता है, इसलिए हम दयालु ' फ़ाइल पर चलाने के लिए एक ही तर्क की आवश्यकता है, फिर विंडो स्थिति को रखते हुए फ़ाइल समाप्त होने पर स्ट्रीम स्रोत पर चलना प्रारंभ करें।डेटाफ्लो नौकरी के लिए प्रारंभिक स्थिति

वर्तमान विचारों:

  • एक कस्टम असीम स्रोत है कि सिर्फ इतना है कि करता है लिखें। फाइल खत्म हो जाती है जब तक कि यह समाप्त नहीं हो जाती है और फिर स्ट्रीम से पढ़ना शुरू कर देता है। बहुत मजेदार नहीं है क्योंकि कस्टम स्रोत लिखना बहुत मजेदार नहीं है।
  • फ़ाइल पर बैच मोड में तर्क चलाएं, और अंतिम चरण किसी भी तरह से स्ट्रीम को सिंक करने के लिए उत्सर्जित करता है, फिर लॉजिक स्टार्टअप का स्ट्रीमिंग संस्करण होता है जो राज्य स्ट्रीम और डेटा स्ट्रीम दोनों से पढ़ता है, और किसी भी तरह से दोनों को जोड़ती है। ऐसा कुछ समझ में आता है, लेकिन यह सुनिश्चित करने के लिए कि स्ट्रीमिंग नौकरी डेटा स्रोत से पढ़ने से पहले, प्रारंभ करने के लिए, राज्य स्रोत से सबकुछ पढ़ती है।
  • ऐतिहासिक डेटा को स्ट्रीम में पाइप करें, एक नौकरी लिखें जो दोनों धाराओं से पढ़ती है। दूसरे समाधान के समान समस्याएं, सुनिश्चित नहीं हैं कि एक स्ट्रीम पहले "उपभोग" कैसे हो।

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

उत्तर

2

आप बुलेट प्वाइंट 2 में सुझाए गए कार्यों को कर सकते हैं --- दो पाइपलाइनों (उसी मुख्य में) चलाएं, जो पहले बड़ी फाइल से पबब विषय को पॉप्युलेट करता है। यह StreamingWordExtract उदाहरण के समान है।

+0

हाँ, मुझे लगता है कि हम डेटा को पब/सब के माध्यम से स्ट्रीमिंग नौकरी में प्राप्त कर सकते हैं, यह सवाल है कि क्या हम दोनों को "बैकफिल" विषय से पहले पढ़ना चाहते हैं, बजाय दोनों को पढ़ने की कोशिश करने के बजाय एक ही समय और इसलिए बहुत अलग घटना टाइमस्टैम्प होने। – bfabry

+0

उपरोक्त मेरे संपादन के साथ, हम गणना को घटनाओं के क्रम के अज्ञेय होने के लिए डिजाइन करते हैं, और हमारे गंतव्य समर्थन आउटपुट को इस तरह बनाते हैं, यह काम करेगा। चीयर्स। – bfabry

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