RDD की गणना क्लस्टर पर वितरित की जाती है। आप RDD ऑपरेशन क्लोजर के बाहर RDD के भीतर से बनाए गए वेरिएबल को अपडेट नहीं कर सकते। वे मूल रूप से दो अलग-अलग जगहों पर होते हैं:चर स्पार्क ड्राइवर में बनाया जाता है और श्रमिकों में पहुँचा जाता है और इसे केवल-पढ़ने के लिए माना जाना चाहिए।
स्पार्क वितरित कम्युलेटर्स का समर्थन करता है जिनका इस मामले में उपयोग किया जा सकता है:स्पार्क कम्युलेटर्सए>
एक अन्य विकल्प (जिसे मैं पसंद करूंगा) आरडीडी की धारा को वांछित डेटा प्रारूप में बदलना और foreachRDD
का उपयोग करना है। द्वितीयक भंडारण में इसे बनाए रखने की विधि। यह समस्या से संपर्क करने का एक अधिक कार्यात्मक तरीका होगा। यह मोटे तौर पर इस तरह दिखेगा:
val filteredStream = twitterStream.filter(entry => filters.exists(term => entry.getText.getStatus.contains(term)))
val filteredStreamWithTs = filteredStream.map(x => ((DateTime.now.toString(), x)))
filteredStreamWithTs.foreachRdd(rdd => // write to Mongo)