¿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
Reducelugar 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,SelectyAggregateen lugar deFilter,MapyReducepor 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