variable - map c#
Mapa y Reducir en.NET (4)
¡Si intentas escribir tu propia versión de Google, entonces eso podría garantizarlo ...!
En serio, si tienes un problema que te puede descomponer en varios problemas más pequeños, entonces una solución Map-Reduce funcionaría. El documento de Google en MapReduce tiene una serie de buenos ejemplos, que incluyen cómo procesar miles de páginas web, contar palabras en el documento, etc.
¿Qué escenarios justificarían el uso del algoritmo " Mapa y Reducción "?
¿Hay una implementación .NET de este algoritmo?
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/
el método GroupBy está actuando como el mapa, mientras que el método Select hace el trabajo de reducir los resultados intermedios en la lista final de resultados.
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);
Para la parte distribuida, puede consultar DryadLINQ: http://research.microsoft.com/en-us/projects/dryadlinq/default.aspx
Linq equivale a Map and Reduce: si tienes la suerte de tener linq, entonces no necesitas escribir tu propio mapa y reducir funciones. C # 3.5 y Linq ya lo tienen aunque con diferentes nombres.
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);
Ver esta otra pregunta con respecto a map / reduce: