¿Qué escenarios justificarían el uso del algoritmo " Mapear y reducir "?
¿Existe una implementación .NET de este algoritmo?
¿Qué escenarios justificarían el uso del algoritmo " Mapear y reducir "?
¿Existe una implementación .NET de este algoritmo?
Respuestas:
Equivalentes de Linq de Map and Reduce: si tiene la suerte de tener linq, entonces no necesita escribir su propio mapa y reducir las funciones. C # 3.5 y Linq ya lo tiene aunque con diferentes nombres.
El mapa es
Select
:Reducir es
Aggregate
:El filtro es
Where
:https://www.justinshield.com/2011/06/mapreduce-in-c/
fuente
Reduce
lugar deAggregate
... A MS le gusta molestar a los programadores?Las clases de problemas que son adecuadas para una solución de estilo mapreduce son problemas de agregación. De extraer datos de un conjunto de datos. En C #, uno podría aprovechar LINQ para programar en este estilo.
Del siguiente artículo: http://codecube.net/2009/02/mapreduce-in-c-using-linq/
Para la parte distribuida, puede consultar DryadLINQ: http://research.microsoft.com/en-us/projects/dryadlinq/default.aspx
fuente
Ya que nunca puedo recordar que LINQ lo llama
Where
,Select
yAggregate
en lugar deFilter
,Map
yReduce
por lo que he creado algunos métodos de extensión se puede utilizar:Estos son los 3 métodos (de https://github.com/cs-util-com/cscore/blob/master/CsCore/PlainNetClassLib/src/Plugins/CsCore/com/csutil/collections/IEnumerableExtensions.cs ):
Algunos detalles más de https://github.com/cs-util-com/cscore#ienumerable-extensions :
fuente