2015-07-29 7 views
8

मुझे उत्सुकता है कि यह एक पूर्ण आवश्यक है कि स्पार्क स्ट्रीमिंग एप्लिकेशन को अच्छी तरह से लाया गया है या यह लिखने वाले लॉग के माध्यम से डुप्लिकेट डेटा उत्पन्न करने का जोखिम चलाता है। नीचे दिए गए परिदृश्य में मैं उन चरणों के अनुक्रम की रूपरेखा तैयार करता हूं जहां एक कतार रिसीवर कतार के साथ इंटरैक्ट करता है, संदेशों के लिए स्वीकृति की आवश्यकता होती है।क्या एक विश्वसनीय रिसीवर लागू करना संभव है जो गैर-सुंदर शट डाउन का समर्थन करता है?

  1. स्पार्क कतार रिसीवर कतार से संदेशों का एक बैच खींचता है।
  2. स्पार्क कतार रिसीवर संदेशों के बैच को लिखने-आगे लॉग में संग्रहीत करता है।
  3. कर्क पर एक एक भेजा जाने से पहले स्पार्क एप्लिकेशन समाप्त हो जाता है।
  4. स्पार्क एप्लिकेशन फिर से शुरू होता है।
  5. लेखन-आगे लॉग में संदेश स्ट्रीमिंग एप्लिकेशन के माध्यम से संसाधित किए जाते हैं।
  6. स्पार्क कतार रिसीवर कतार से संदेशों का एक बैच खींचता है जो चरण 1 में पहले ही देखा जा चुका है क्योंकि उन्हें प्राप्तकर्ता के रूप में स्वीकार नहीं किया गया था।
  7. ...

मेरी समझ यह है कि यह साथ आने दोहराव की समस्याओं, और यह सामान्य है एक सुंदर बंद की आवश्यकता होती है करने के लिए कैसे कस्टम रिसीवर लागू किया जाना चाहिए पर सही है?

उत्तर

2

नीचे पंक्ति: यह आपके आउटपुट ऑपरेशन पर निर्भर करता है।

प्रत्यक्ष एपीआई दृष्टिकोण है, जो introduced on V1.3 था का उपयोग करना, स्पार्क स्ट्रीमिंग और काफ्का के बीच विसंगतियों को समाप्त, और इसलिए प्रत्येक रिकॉर्ड विफलताओं के बावजूद प्रभावी रूप से ठीक एक बार स्पार्क स्ट्रीमिंग द्वारा प्राप्त होता है क्योंकि ऑफसेट अपनी चौकियों के भीतर स्ट्रीमिंग स्पार्क द्वारा पता लगाया जाता है।

आदेश अपने परिणामों के उत्पादन में, अपने उत्पादन आपरेशन कि बचाता है एक बाहरी डेटा स्टोर करने के लिए डेटा या तो idempotent, या एक परमाणु लेनदेन है कि परिणाम और ऑफसेट बचाता होना चाहिए के लिए वास्तव में एक बार अर्थ विज्ञान को प्राप्त करने के।

डायरेक्ट एपीआई और इसका उपयोग करने के तरीके के बारे में अधिक जानकारी के लिए, this blog post डाटाबेस द्वारा देखें।

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