Estoy tratando de contar el número de usuarios únicos por día en mi aplicación java appengine. He decidido usar el framework mapreduce (mapreduce.appspot.com) para java appengine para hacer este cálculo sin conexión. Me las he arreglado para crear un trabajo de reducción de mapas que atraviesa todas mis entidades que representan un evento de sesión de un solo usuario. Puedo usar un contador simple también. Sin embargo, tengo varias preguntas:Contando usuarios únicos usando Mapreduce para Java Appengine
1) ¿Cómo solo puedo incrementar un contador una vez por cada identificación de usuario? Actualmente estoy mapeando entidades que contienen una propiedad de identificación de usuario, pero muchas de estas entidades pueden contener el mismo ID de usuario, así que ¿cómo solo lo cuento una vez?
2) Una vez que tengo estos resultados del trabajo almacenado en estos contadores, ¿cómo puedo persistir con ellos en el almacén de datos? Veo los resultados de los contadores en la página de estado de mapreduce, pero quiero que estos resultados se conserven automáticamente en el almacén de datos.
Ideas?
"cada vez que encuentre una entidad única": ¿cómo puede saber si la entidad que está mirando (actualmente mapeo) es una que ha visto antes? – aloo
Digamos que su asignador acaba de recibir la entidad con ID de usuario ABC123. lo primero que debe hacer es verificar si hay una entidad UniqueCount para ABC123. Si lo hay, ya sabes que ya lo explicaste, y no harás nada. Si no lo hay, creará una entidad UniqueCount para ABC123. Después de haber hecho eso para todas sus entidades, tendrá exactamente una entidad UniqueCount para cada usuario. A continuación, puede hacer un conteo más directo de solo las entidades UniqueCount. –
Ahh, esto implica crear otro tipo de entidad en el almacén de datos ... y ejecutar dos pases. Parece razonable, pero esperaba una solución más simple – aloo