Je suis quelque peu confus avec l'état actuel du support mapreduce dans GAE. Selon les docs http://code.google.com/p/appengine-mapreduce/ phase de réduction n'est pas encore pris en charge, mais dans la description de la session à partir de I/O 2011 (http://www.youtube.com/watch?v=EIxelKcyCC0) il est écrit "Il est maintenant possible d'exécuter des tâches Map Reduce complet sur App Engine". Je me demande si je peux utiliser MapReduce dans cette tâche:Exemple de compteur simple utilisant mapreduce dans Google App Engine
Ce que je veux faire:
Je modèle de voiture avec la couleur sur le terrain:
class Car(db.Model):
color = db.StringProperty()
Je veux courir MapReduce (de de temps en temps, défini par cron) qui peut calculer le nombre de voitures dans chaque couleur et stocker ce résultat dans le magasin de données. On dirait un travail bien adapté pour mapreduce (mais si je me trompe), la phase "map" donnera des paires (, 1) pour chaque entité Car, et la phase "reduce" devrait fusionner ces données par color_name en me donnant les résultats attendus . Résultat final Je veux obtenir sont des entités avec des données calculées stockées dans le magasin de données, quelque chose comme ça:
class CarsByColor(db.Model):
color_name = db.StringProperty()
cars_num = db.IntegerProperty()
Problème: Je ne sais pas comment implémenter dans AppEngine ... La vidéo montre des exemples avec des fonctions map et reduce définies, mais elles semblent être des exemples très généraux non liés au datastore. Tous les autres exemples que j'ai trouvés utilisent une fonction pour traiter les données de DatastoreInputReader, mais ils semblent être seulement la phase "map", il n'y a pas d'exemple de comment faire le "réduire" (et comment stocker réduire les résultats dans le magasin de données).