स्पार्क स्ट्रीमिंग में वाइंडिंग के साथ स्टेटफुल ट्रांसफॉर्मेशन



यह ब्लॉग पोस्ट स्पार्क स्ट्रीमिंग में विंडोिंग के साथ स्टेटफुल ट्रांसफॉर्मेशन पर चर्चा करता है। राज्य-पूर्ण डी-स्ट्रीम का उपयोग करके बैचों के डेटा पर नज़र रखने के बारे में सभी जानें।

पृथ्वीराज बोस द्वारा योगदान दिया गया

इस ब्लॉग में हम अपाचे स्पार्क के स्टेटफुल ट्रांसफॉर्मेशन की विंडोिंग अवधारणा पर चर्चा करेंगे।





राज्य परिवर्तन क्या है?

स्पार्क स्ट्रीमिंग एक माइक्रो बैच आर्किटेक्चर का उपयोग करती है, जहां आने वाले डेटा को डिस्क बैच (डीएसट्रीम) नामक माइक्रो बैच में समूहीकृत किया जाता है जो मूल प्रोग्रामिंग अमूर्त के रूप में भी कार्य करता है। आंतरिक रूप से DStreams में Resilient Distributed Datasets (RDD) होता है और इस मानक के परिणामस्वरूप RDD रूपांतरण और क्रियाएं की जा सकती हैं।



स्ट्रीमिंग में अगर हमारे पास बैचों में डेटा ट्रैक करने के लिए उपयोग का मामला है तो हमें राज्य-पूर्ण DStreams की आवश्यकता है।

उदाहरण के लिए, हम उपयोगकर्ता सत्र के दौरान किसी वेबसाइट में किसी उपयोगकर्ता के इंटरैक्शन को ट्रैक कर सकते हैं या हम किसी विशेष ट्विटर हैशटैग को समय पर ट्रैक कर सकते हैं और देख सकते हैं कि दुनिया भर में कौन से उपयोगकर्ता इसके बारे में बात कर रहे हैं।

राज्य-पूर्ण परिवर्तन के प्रकार।



स्टेट-फुल DStreams दो तरह की होती हैं- विंडो बेस्ड ट्रैकिंग और फुल सेशन ट्रैकिंग।

स्टेटफुल ट्रैकिंग के लिए सभी इनकमिंग डेटा को की-वैल्यू पेयर में तब्दील किया जाना चाहिए, ताकि महत्वपूर्ण राज्यों को बैचों में ट्रैक किया जा सके। यह एक पूर्व शर्त है।

इसके अलावा हमें चेकपॉइंटिंग को भी सक्षम करना चाहिए, एक अवधारणा जिसे हम बाद के ब्लॉगों में चर्चा करेंगे।

जावा में चार क्या है

> विंडो आधारित ट्रैकिंग

विंडो आधारित ट्रैकिंग में आने वाले बैचों को समय अंतराल में समूहीकृत किया जाता है, यानी समूह बैच हर ‘x’ सेकंड में। इन बैचों पर आगे की गणना स्लाइड अंतराल का उपयोग करके की जाती है।

उदाहरण के लिए यदि विंडो अंतराल = 3 सेकंड और स्लाइड अंतराल = 2 सेकंड, तो आने वाले सभी डेटा को हर 3 सेकंड में बैचों में वर्गीकृत किया जाएगा और इन बैचों पर गणना हर 2 सेकंड में होगी। वैकल्पिक रूप से हम कह सकते हैं, पिछले 3 सेकंड में आने वाले बैचों पर हर 2 सेकंड में गणना करें।

spark-streaming-dstream-window

उपरोक्त आरेख में हम देखते हैं कि आने वाली बैचों को समय की प्रत्येक 3 इकाइयों (विंडो अंतराल) में समूहीकृत किया जाता है और गणना हर 2 यूनिट समय (स्लाइड अंतराल) की जाती है।
नोट: अपाचे फ्लिंक के विपरीत, अपाचे स्पार्क में टंबलिंग विंडो की अवधारणा नहीं है, सभी विंडो स्लाइडिंग हैं।

आग

विंडो आधारित परिवर्तनों के लिए एक लोकप्रिय एपीआई है

PairDStreamFunctions.reduceByKeyAndWindow

इस API के कई अतिभारित संस्करण हैं, आइए देखें कि इनमें कितने पैरामीटर हैं। इस स्पष्टीकरण के बाद इस एपीआई के शेष ओवरलोड संस्करणों को आत्म व्याख्यात्मक होना चाहिए।

रिटर्न: रूपांतरित DStream [(K, V)]

कम करें : साहचर्य कम करने का कार्य।

invReduceFunc : ऊपर के फंक्शन का उलटा। आवक और जावक बैचों के कुशल कंप्यूटिंग के लिए यह आवश्यक है। इस फ़ंक्शन की सहायता से जो बैच आउटगोइंग होते हैं उनके मूल्य को उपरोक्त कम फ़ंक्शन के संचित मूल्य से घटा दिया जाता है। उदाहरण के लिए, यदि हम संबंधित कुंजियों के लिए आने वाले मानों की राशि की गणना कर रहे हैं तो निवर्तमान बैचों के लिए हम संबंधित कुंजियों के लिए मानों को घटा देंगे (बशर्ते वे वर्तमान बैच में मौजूद हैं और उपेक्षा करें)।

खिड़की का समय : बैचों को समूहीकृत करने के लिए समय की इकाइयाँ, यह बैच अंतराल की एक बहु होनी चाहिए।

स्लाइड अवधि : अभिकलन के लिए समय की इकाइयाँ, यह बैच अंतराल की एक बहु होनी चाहिए। विभाजन : परिणामी DStream के भंडारण के लिए उपयोग करने वाला विभाजनकर्ता। विभाजन के बारे में अधिक जानकारी के लिए पढ़ें यह

फ़िल्टर करें : एक्सपायर्ड की-वैल्यू पेयर को फिल्टर करने का फंक्शन, उदाहरण के लिए, अगर हमें कुंजी की अपडेट नहीं मिलती है तो कुछ समय के लिए हम इसे हटाना चाहते हैं।

यहाँ एक है कार्यक्रम सॉकेट स्ट्रीम से आने वाले शब्दों को गिनना। हमने उपरोक्त फ़ंक्शन के ओवरलोड संस्करण का उपयोग 4 सेकंड के विंडो अंतराल और 2 सेकंड के स्लाइड अंतराल के साथ किया है।

अपने अगले ब्लॉग में मैं पूर्ण सत्र ट्रैकिंग और चेकपॉइंटिंग के बारे में लिखूंगा।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपके पास वापस आ जाएंगे।

संबंधित पोस्ट:

ब्रॉडकास्ट वैरिएबल के साथ कैशिंग वितरित