2010-06-28 14 views
6

के लिए मैप्रेडस का उपयोग करके अद्वितीय उपयोगकर्ताओं की गणना करना मैं अपने जावा एपेंगेन ऐप पर प्रति दिन अद्वितीय उपयोगकर्ताओं की संख्या गिनने की कोशिश कर रहा हूं। मैंने इस गणना को ऑफ़लाइन करने के लिए जावा एपेंजिन के लिए मैप्रिडस फ्रेमवर्क (mapreduce.appspot.com) का उपयोग करने का निर्णय लिया है। मैंने एक नक्शा बनाने में कामयाब रहा है जो नौकरी को कम करता है जो मेरी सभी संस्थाओं के माध्यम से जाता है जो एकल उपयोगकर्ता सत्र कार्यक्रम का प्रतिनिधित्व करते हैं। मैं एक साधारण काउंटर का भी उपयोग कर सकता हूं। मेरे पास कई प्रश्न हैं हालांकि:जावा Appengine

1) मैं प्रत्येक उपयोगकर्ता आईडी के लिए केवल एक बार काउंटर कैसे बढ़ा सकता हूं? मैं वर्तमान में उन इकाइयों पर मैपिंग कर रहा हूं जिनमें उपयोगकर्ता आईडी संपत्ति है लेकिन इनमें से कई इकाइयों में एक ही उपयोगकर्ता आईडी हो सकती है, तो मैं इसे केवल एक बार कैसे गिन सकता हूं?

2) एक बार मेरे पास इन काउंटरों में संग्रहीत नौकरी के परिणाम हैं - मैं उन्हें डेटास्टोर में कैसे बना सकता हूं? मैं मैप्रिडस के स्टेटस पेज पर काउंटर के परिणाम देखता हूं लेकिन मैं चाहता हूं कि ये परिणाम स्वचालित रूप से डेटास्टोर पर बने रहें।

विचार?

उत्तर

1

मैंने वास्तव में अभी तक MapReduce कार्यक्षमता का उपयोग नहीं किया है, लेकिन मेरी सैद्धांतिक समझ यह है कि आप अपने मैपर के भीतर से डेटास्टोर में चीजें लिख सकते हैं। आप अनन्यकाउंट जैसे कुछ नामक एक इकाई प्रकार बना सकते हैं, और प्रत्येक बार जब आपका मैपर एक आईडी देखता है जिसे उसने पहले नहीं देखा है तो एक इकाई डालें। तो आप गिन सकते हैं कि आपके पास कितनी अद्वितीय आईडी है। वास्तव में, जब भी आप एक नई अनूठी इकाई पाते हैं तो आप केवल एक काउंटर अपडेट कर सकते हैं। आप डेटास्टोर में एक काउंटर बनाने पर संकेतों के लिए "sharded counter" को Google पर क्लिक करना चाहते हैं जो उच्च थ्रूपुट को संभाल सकता है।

आखिरकार, जब वे कम करने की कार्यक्षमता खत्म करते हैं, तो मुझे लगता है कि यह पूरा कार्य बहुत छोटा हो जाएगा।

+0

"हर बार जब आप एक अनूठी इकाई पाते हैं" - आप कैसे जानते हैं कि आप जिस इकाई को देख रहे हैं (वर्तमान में मैपिंग) वह है जिसे आपने पहले देखा है? – aloo

+0

मान लें कि आपका मैपर केवल यूजर आईडी एबीसी 123 के साथ इकाई को दिया गया था। पहली चीज जो आप करेंगे, यह देखने के लिए जांच करें कि क्या एबीसी 123 के लिए अनन्य काउंटी इकाई है या नहीं। यदि ऐसा है, तो आप जानते हैं कि आप इसके लिए पहले से ही जिम्मेदार हैं, और आप कुछ भी नहीं करेंगे। यदि नहीं है, तो आप एबीसी 123 के लिए एक अनन्य काउंटी इकाई बनायेंगे। आपके सभी इकाइयों के लिए ऐसा करने के बाद, आपके पास प्रत्येक उपयोगकर्ता के लिए बिल्कुल एक अद्वितीय काउंटी इकाई होगी। फिर आप केवल अनन्य काउंटी इकाइयों की एक और सीधी गिनती कर सकते हैं। –

+0

आह इसलिए इसमें डेटास्टोर में एक और इकाई प्रकार बनाना शामिल है ... और दो पास चल रहा है। उचित लगता है लेकिन एक आसान समाधान की उम्मीद कर रहा था – aloo