2010-04-02 12 views
7

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

मेरे पास एक बड़ी फ़ाइल है जो सभी लिंक का प्रतिनिधित्व करती है, जिसमें प्रत्येक पंक्ति एक पृष्ठ का प्रतिनिधित्व करती है और पंक्तियों के मूल्यों को प्रदर्शित करने वाले पृष्ठों का प्रतिनिधित्व करता है।

डिस्को के लिए, मैंने इस फ़ाइल को एन भाग में तोड़ दिया, फिर एक दौर के लिए मैपरेडस चलाया। नतीजतन, मुझे (पेज, रैंक) tuples का एक सेट मिलता है।

मैं इस रैंक को अगले पुनरावृत्ति में फ़ीड करना चाहता हूं। हालांकि, अब मेरे मैपर को दो इनपुट की आवश्यकता है: ग्राफ फ़ाइल, और पेजरैंक।

  1. मैं करने के लिए "ज़िप" एक साथ ग्राफ फ़ाइल और पेज रैंक, ऐसी है कि प्रत्येक पंक्ति एक पेज का प्रतिनिधित्व करता है चाहते हैं, यह पद है, और यह लिंक बाहर है।
  2. के बाद से इस ग्राफ फ़ाइल एन टुकड़ों में विभाजित किया गया है, मैं एन में समानांतर हिस्सा पृष्ठस्तर वेक्टर विभाजित करने की आवश्यकता है, और ग्राफ के क्षेत्रों पृष्ठस्तर वैक्टर की ज़िप हिस्सा

यह सभी को और अधिक लगता है आवश्यक से जटिल, और एक सुंदर सीधा ऑपरेशन (क्विंटेसेन्शियल मैप्रिडस एल्गोरिदम के साथ), ऐसा लगता है कि मुझे डिस्को के बारे में कुछ याद आ रहा है जो वास्तव में दृष्टिकोण को सरल बना सकता है।

किसी भी विचार?

उत्तर

1

ऐसा लगता है कि आप पहले पास के लिए init_map का उपयोग करना चाहते हैं और उसके बाद प्रत्येक अनुवर्ती पुनरावृत्ति के लिए iter_map का उपयोग करना चाहते हैं।

देखें: http://discoproject.org/doc/faq.html#id7

कर सकते हैं आप उत्पादन अजगर उद्देश्य यह है कि आउटलिंक, बजाय बस (पेज, रैंक) tuples के शामिल हैं?

एक और विकल्प पृष्ठ पर कहीं भी आउटलिंक होगा (dict, memcache, kyotocabinet, आदि ...) और उन्हें मैपिंग फ़ंक्शन से देखें। यदि आप डिस्को के साथ चीजों को चेन कर रहे हैं, तो मुझे नहीं लगता कि आप वर्कफ़्लो के बीच में चीजों को एक साथ जोड़ना चाहेंगे।

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