質問

" Map and Reduce "の使用を保証するシナリオアルゴリズム?


このアルゴリズムの.NET実装はありますか?

役に立ちましたか?

解決

LinqのMapおよびReduceに相当するもの: linqを使用できるほど幸運であれば、独自のマップを作成して関数を削減する必要はありません。 C#3.5とLinqは、名前は異なるものの、すでにそれを持っています。

Map = Select | Enumerable.Range(1, 10).Select(x => x + 2);
Reduce = Aggregate | Enumerable.Range(1, 10).Aggregate(0, (acc, x) => acc + x);
Filter = Where | Enumerable.Range(1, 10).Where(x => x % 2 == 0);

https://www.justinshield.com/2011/06/mapreduce -in-c /

他のヒント

mapreduceスタイルのソリューションに適している問題のクラスは、集約の問題です。データセットからデータを抽出します。 C#では、LINQを利用してこのスタイルでプログラミングできます。

次の記事から: http://codecube.net/2009/02/mapreduce-in- c-using-linq /

  

GroupByメソッドはマップとして機能し、Selectメソッドは中間結果を最終結果リストに削減する作業を行います。

var wordOccurrences = words
                .GroupBy(w => w)
                .Select(intermediate => new
                {
                    Word = intermediate.Key,
                    Frequency = intermediate.Sum(w => 1)
                })
                .Where(w => w.Frequency > 10)
                .OrderBy(w => w.Frequency);

分散部分については、DryadLINQを確認できます。 http:/ /research.microsoft.com/en-us/projects/dryadlinq/default.aspx

LINQが Filter 、< code> Map および Reduce を使用して、使用できるいくつかの拡張メソッドを作成しました。

IEnumerable<string> myStrings = new List<string>() { "1", "2", "3", "4", "5" };
IEnumerable<int> convertedToInts = myStrings.Map(s => int.Parse(s));
IEnumerable<int> filteredInts = convertedToInts.Filter(i => i <= 3); // Keep 1,2,3
int sumOfAllInts = filteredInts.Reduce((sum, i) => sum + i); // Sum up all ints
Assert.Equal(6, sumOfAllInts); // 1+2+3 is 6

3つのメソッドがあります( https://github.com/cs-util-com/cscore/blob/master/CsCore/PlainNetClassLib/src/Plugins/CsCore/com/csutil/collections/IEnumerableExtensions。 cs ):

public static IEnumerable<R> Map<T, R>(this IEnumerable<T> self, Func<T, R> selector) {
    return self.Select(selector);
}

public static T Reduce<T>(this IEnumerable<T> self, Func<T, T, T> func) {
    return self.Aggregate(func);
}

public static IEnumerable<T> Filter<T>(this IEnumerable<T> self, Func<T, bool> predicate) {
    return self.Where(predicate);
}

https://github.com/cs-utilからの詳細-com / cscore#ienumerable-extensions

ここに画像の説明を入力してください

独自のバージョンのGoogleを作成しようとしていた場合、それはそれを保証する可能性があります.. !!!

しかし、真剣に、いくつかの小さな問題に分解できる問題がある場合、Map-Reduceソリューションが機能します。 MapReduce のGoogleドキュメントには、数千の処理方法など、いくつかの良い例があります。ウェブページ、ドキュメント内の単語のカウントなど

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top