SharpDoop Implementando Map reduce en C# (1) El Proyecto

Ya estuve experimentando con map-reduce en Node.js/JavaScript. Pero también es interesante implementar algo del algoritmo en C#, para practicar TDD (Test-Driven Development) y para aprender más sobre lo que implica implementar el algoritmo. El proyecto que inicié es:


https://github.com/ajlopez/SharpDoop


El estado del proyecto a hoy:



Tiene un proyecto de librería de clases, y el proyecto de test. Todavía no llegué a pensar en algo distribuido. Lo único que quiero por ahora es especificar el algoritmo de map, el de reduce, y enviarlo a que procese como un job, dentro de este proyecto.


Vean que hay entonces un MapReduceJob. Es la clase base que se encarga de ejecutar un map (un lambda o Action que toma clave, valor y va procesándolo) y un reduce (toma clave, una lista de valores de esa clave, y emite resultado). Gracias a C#, esas dos operaciones se pueden expresar como lambdas o como métodos delegados en un objeto más complejo. Por ahora, están funcionando los casos simples que planteo en los tests.


Como divertimento, armé también un MapProcessJob, que es una variante de map/reduce a discutir. En vez de procesar primero todas las claves, y luego pasarlas por el reduce, trata de hacer todo junto. En algunos casos de uso puede ser más eficiente, pero es un tema a discutir con más detalle.


Próximos temas: revisar más en profundidad la implementación y las ideas, como el map/process.


Nos leemos!


Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 1389, 15035, 17628, 18478, 5374. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>