2012-04-12 14 views
7

PLINQ का उपयोग कर सी # में MapReduce को कैसे कार्यान्वित करें?PLINQ का उपयोग कर सी # में MapReduce को कैसे कार्यान्वित करें?

मान लीजिए, आपके पास डेटा एकत्र करने के लिए 7-8 वेब सर्विसेज हैं और प्रत्येक प्राप्त करने (एसिंक विधि) पर आपको उस डेटा को डेटाबेस के कुछ तालिकाओं में रखना है, मेरे मामले में यह SQL Server 2008 है। उदाहरण के लिए डेटा प्रत्येक वेब सेवा से हो रही है है:

<employees> 
    <employee> 
    <name>Ramiz</name> 
    </employee> 
    <employee> 
    <name>Aamir</name> 
    </employee> 
    <employee> 
    <name>Zubair</name> 
    </employee> 
</employees> 

और, इस डेटा एक तालिका नाम में जाता है प्रतिक्रिया के प्रत्येक प्राप्त करने पर - कर्मचारी:

Employee 
=== 
EmployeeID (PK) 
EmployeeName 

एक बार डेटा तालिका में चला जाता है, यह वापस जाने के लिए है json क्लाइंट के लिए जो एएसपी.नेट (एमवीसी 3) आवेदक है आयन क्लाइंट-साइड जावास्क्रिप्ट (AJAX) का उपयोग करके यह कॉल कर रहा है।

मान लीजिए, एक WebServiceEmployee1 डेटा के साथ वापस आ गया है और अन्य 6 (अभी भी डेटा प्राप्त करने की कोशिश) कतार में हैं। फिर, इसे अन्य 6 की प्रतीक्षा करने के बजाय परिणामों को तालिका में पंजीकृत करना चाहिए और जेसन में ग्राहक को सम्मिलित कर्मचारी के डेटा वापस करना चाहिए। और, इसे जुड़े रहें और कर रहे हों जबकि अन्य एक ही तरीके से करें।

देखने के लिए कृपया, मेरे टूलबेल्ट के मैं ASP.NET MVC -3 (उस्तरा) है, एसक्यूएल सर्वर 2008 R2, jQuery।

धन्यवाद।

+0

दलीलों हमें डेटा आप कार्रवाई करने के लिए जा रहे हैं और प्रसंस्करण परिणाम आप अंत में प्राप्त करने की उम्मीद का एक सरल उदाहरण दे। –

+0

@ अचिटाका-सान मैंने पोस्ट को अपडेट किया है। –

+0

मैं अपने उत्तर हटा दिया गया क्योंकि मैं काफी अपने संदर्भ समझ में नहीं आता और कैसे आप MapReduce उपयोग कर सकते हैं जहां के साथ या LINQ – Nikolay

उत्तर

1

प्रसंस्करण, जो आप चाहते पर स्पष्ट समझ के बिना, मैं हालांकि निम्नलिखित MSDN प्रलेखीकरण पढ़ने का सुझाव: http://bit.ly/Ir7Nvk यह नक्शा वर्णन करता है/जैसे उदाहरण के साथ PLINQ साथ कम हो:

public IDMultisetItemList PotentialFriendsPLinq(SubscriberID id, 
              int maxCandidates) 
{ 
    var candidates = 
    subscribers[id].Friends.AsParallel()      
    .SelectMany(friend => subscribers[friend].Friends) 
    .Where(foaf => foaf != id && 
      !(subscribers[id].Friends.Contains(foaf))) 
    .GroupBy(foaf => foaf)        
    .Select(foafGroup => new IDMultisetItem(foafGroup.Key, 
             foafGroup.Count())); 
    return Multiset.MostNumerous(candidates, maxCandidates); 
} 

"मानचित्र" किया जा रहा है Friends.AsParallel, SelectMany, और Where और "को कम" चरण GroupBy और Select

0

एमएस से इस पीडीएफ एक मानचित्र बीच/अंत में उदाहरण में कमी की गई है

0,123,

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CH0QFjAE&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F3%2F4%2FD%2F34D13993-2132-4E04-AE48-53D3150057BD%2FPatterns_of_Parallel_Programming_CSharp.pdf&ei=4f_VT-ScD-Lg2gWqoeSWDw&usg=AFQjCNGhk_BZL8-5n8DaS_kMTaWRU9Y1Zw&sig2=ddKl4KuOGUiUb1pIawWeNQ

public static IEnumerable<TResult> MapReduce<TSource, TMapped, TKey, TResult>(
this IEnumerable<TSource> source, 
Patterns of Parallel Programming Page 76 
Func<TSource, IEnumerable<TMapped>> map, 
Func<TMapped, TKey> keySelector, 
Func<IGrouping<TKey, TMapped>, IEnumerable<TResult>> reduce) 
{ 
return source.SelectMany(map) 
.GroupBy(keySelector) 
.SelectMany(reduce); 
} 
संबंधित मुद्दे