[c#] Mapa y Reducir en .NET


Answers

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

Question

¿Qué escenarios justificarían el uso del algoritmo " Mapa y Reducción "?


¿Hay una implementación .NET de este algoritmo?




¡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.




Related



Tags

c# c#   mapreduce