在.NET中映射和减less
什么情况下会保证使用“ 映射和减less ”algorithm?
有没有这个algorithm的.NET实现?
Linq等价于Map和Reduce:如果你足够幸运有linq,那么你不需要编写你自己的地图和减less函数。 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);
看到有关map / reduce的其他问题:
C#中的通用列表扩展
适合mapreduce样式解决scheme的问题类是聚合问题。 从数据集中提取数据。 在C#中,可以利用LINQ来编程。
从以下文章: http : //codecube.net/2009/02/mapreduce-in-c-using-linq/
GroupBy方法充当地图,而Select方法执行将中间结果减less到最终结果列表的工作。
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
如果您正在尝试编写您自己的Google版本,那么可能会保证。
说真的,如果你有一个问题,你可以分解成几个小问题,那么一个Map-Reduce解决scheme将工作。 MapReduce上的Google文档有很多很好的例子,包括如何处理数以千计的网页,文档中的文字等等。