2010-05-21 9 views
9

Hola a todos, acaba de empezar en hadoop y curiosidad por lo que la mejor manera en mapreduce sería para contar visitantes únicos si sus archivos de registro se veía así ...¿Cuál es la mejor manera de contar visitantes únicos con Hadoop?

DATE  siteID action username 
05-05-2010 siteA pageview jim 
05-05-2010 siteB pageview tom 
05-05-2010 siteA pageview jim 
05-05-2010 siteB pageview bob 
05-05-2010 siteA pageview mike 

y para cada sitio que quería averiguar la visitantes únicos para cada sitio?

Estaba pensando que el asignador emitiría siteID \ t nombre de usuario y el reductor mantendría un conjunto() de los nombres de usuario únicos por clave y luego emitiría la longitud de ese conjunto. Sin embargo, eso potencialmente podría almacenar millones de nombres de usuario en la memoria que no parece correcto. Alguien tiene una mejor manera?

estoy usando streaming de pitón por cierto

gracias

Respuesta

3

Usted puede hacerlo como una operación en 2 etapas:

primer paso, emitir (username => siteID), y tienen el reductor acaba de contraer múltiples ocurrencias de ID de sitio usando un set - ya que normalmente tendría muchos menos sitios que usuarios, esto debería estar bien.

Luego en el segundo paso, puede emitir (siteID => username) y hacer un simple conteo, ya que los duplicados se han eliminado.

1

Utilice la ordenación secundaria para ordenar el ID de usuario. De esta manera, no necesita tener nada en la memoria: simplemente transmita los datos a través de, e incremente su contador distinto cada vez que vea el cambio de valor para una identificación de sitio en particular.

Aquí hay algunos documentation.

1

Mi aproach es similar a lo que tzaman dio con un pequeño giro

  1. mapa de salida: (nombre de usuario, siteid) => ("")
  2. reducir la producción: (siteid) => (1)
  3. mapa: asignador de identidades
  4. reducir: longsumreducer (es decir, simplemente resumir)

Tenga en cuenta que el primer reducir no tiene que ir sobre cualquiera de los r se presenta ecords. Simplemente puede examinar la clave y producir la salida.

HTH

Cuestiones relacionadas