Sto cercando di contare il numero di utenti unici al giorno sulla mia app app di java. Ho deciso di utilizzare il framework mapreduce (mapreduce.appspot.com) per java appengine per eseguire questo calcolo offline. Sono riuscito a creare una mappa per ridurre il lavoro che passa attraverso tutte le mie entità che rappresentano un singolo evento di sessione degli utenti. Posso usare anche un semplice contatore. Ho alcune domande però:Conteggio utenti unici utilizzando Mapreduce per Java Appengine
1) Come faccio ad incrementare un contatore solo una volta per ogni ID utente? Attualmente sto mappando su entità che contengono una proprietà ID utente ma molte di queste entità potrebbero contenere lo stesso ID utente, quindi come faccio a contarle una sola volta?
2) Una volta ottenuti questi risultati del lavoro in questi contatori, come posso mantenerli nell'archivio dati? Vedo i risultati dei contatori sulla pagina di stato di mapreduce, ma voglio che questi risultati siano permanentemente salvati sul datastore.
Idee?
"ogni volta che trovi un'entità unica" - come fai a sapere se l'entità che stai guardando (attualmente la mappatura) è quella che hai visto prima? – aloo
Supponiamo che al tuo mappatore sia stata assegnata l'entità con userid ABC123. la prima cosa che farai è verificare se esiste un'entità UniqueCount per ABC123. Se c'è, sai di averlo già spiegato e non farai nulla. In caso contrario, verrà creata un'entità UniqueCount per ABC123. Dopo averlo fatto per tutte le tue entità, avrai esattamente un'entità UniqueCount per ogni utente. È quindi possibile eseguire un conteggio più diretto delle sole entità di UniqueCount. –
Ah, quindi questo implica la creazione di un altro tipo di Entità nel datastore ... e l'esecuzione di due passaggi. Sembra ragionevole ma speravo in una soluzione più semplice – aloo