मैं स्पार्क स्ट्रीमिंग में एक (सरलीकृत) समस्या को हल करने की कोशिश कर रहा हूं: मान लीजिए कि मेरे पास उपयोगकर्ताओं द्वारा बनाई गई घटनाओं का एक लॉग है, जहां प्रत्येक घटना एक टुपल (उपयोगकर्ता नाम, गतिविधि, समय) है, उदाहरण:क्या स्पार्क स्ट्रीमिंग नौकरी की स्थिति में लाखों कुंजी को दो महीने तक रखना संभव है?
("user1", "view", "2015-04-14T21:04Z")
("user1", "click", "2015-04-14T21:05Z")
अब मैं उपयोगकर्ता द्वारा कुछ विश्लेषण करने के लिए ईवेंट इकट्ठा करना चाहता हूं। घटनाओं भी 2 महीने के लिए रखा जाना चाहिए
("user1", List(("view", "2015-04-14T21:04Z"),("click", "2015-04-14T21:05Z"))
: मान लें कि उत्पादन का विश्लेषण में है। उस समय के दौरान 500 मिलियन ऐसी घटनाओं के बारे में हो सकता है, और लाखों अद्वितीय उपयोगकर्ता, जो यहां कुंजी हैं।
मेरे प्रश्न हैं:
- यह
updateStateByKey
DStream पर साथ ऐसा करना संभव है, जब मैं कुंजी के लाखों लोगों संग्रहीत है? - क्या मैं सही हूं कि
DStream.window
यहां कोई उपयोग नहीं है, जब मेरे पास 2 महीने की लंबाई खिड़की है और कुछ सेकंड की स्लाइड लेना चाहेंगे?
पीएस मुझे पता चला कि updateStateByKey
प्रत्येक स्लाइड पर सभी चाबियों पर कॉल किया जाता है, इसका मतलब है कि इसे हर कुछ सेकंड में लाखों बार कहा जाएगा।
- राज्य
- ट्राइडेंट राज्य का उपयोग के लिए कैसेंड्रा का उपयोग कर (कैसेंड्रा शायद के साथ)
- अपने राज्य प्रबंधन के साथ Samza का उपयोग कर: यह मुझे इस डिजाइन में शक और मैं नहीं बल्कि वैकल्पिक समाधान के बारे में सोच रहा हूँ की तरह बना देता है।
मेरे पास इसके बारे में एक बहुत ही सटीक सवाल है, बस एक त्वरित शोध करें और कुछ अंक प्राप्त करें 1) स्पार्क राज्य अपडेट करने पर अपना रास्ता सुधारता है https://databricks.com/blog/2016/02/01/faster-stateful- स्ट्रीम-प्रसंस्करण-इन-स्पार्क-स्ट्रीमिंग.html 2) ऐसा लगता है कि अगर आप samza https://samza.apache.org/learn/documentation/0.10/comparisons/spark-streaming.html का उपयोग करते हैं तो यह आपके उपयोग के मामले में अधिक फिट बैठता है, वैसे भी, आप इसे कैसे कार्यान्वित करते हैं? चूंकि सवाल काफी पुराना है, मुझे लगता है कि आप एक समाधान – rendybjunior