Was ist der beste Weg, um einzigartige Besucher mit Hadoop zu zählen?

9

hey alle, wir fangen gerade erst mit hadoop an und sind gespannt, was der beste Weg in mapreduce wäre, einzigartige Besucher zu zählen, wenn deine Logfiles so aussehen ...

%Vor%

und für jede Site wollten Sie die einzigartigen Besucher für jede Site herausfinden?

Ich dachte, der Mapper würde siteID \ t username ausgeben und der Reduzierer würde ein set () der eindeutigen Benutzernamen pro Schlüssel behalten und dann die Länge dieses Satzes ausgeben. Dies würde jedoch potenziell Millionen von Benutzernamen im Speicher speichern, was nicht richtig erscheint. Jeder hat einen besseren Weg?

Ich benutze übrigens Python-Streaming

Danke

    
James 21.05.2010, 20:37
quelle

4 Antworten

3

Sie können es als zweistufigen Vorgang ausführen:

Erster Schritt, geben Sie (username => siteID) aus und lassen Sie den Reduzierer einfach mehrere Vorkommen von siteID mit einem set reduzieren - da Sie normalerweise weit weniger Websites als Benutzer haben, sollte dies in Ordnung sein.

Dann können Sie im zweiten Schritt (siteID => username) ausgeben und eine einfache Zählung durchführen, da die Duplikate entfernt wurden.

    
tzaman 21.05.2010, 20:48
quelle
1

Mein Ansatz ist ähnlich dem, was Tzaman mit einer kleinen Drehung gab

  1. Kartenausgabe: (Benutzername, Site-ID) = & gt; ("")
  2. reduziere Ausgabe: (siteid) = & gt; (1)
  3. Karte: Identity Mapper
  4. reduce: longsumreducer (d. h. einfach zusammenfassen)

Beachten Sie, dass die erste Reduzierung nicht über die Datensätze hinausgehen muss. Sie können einfach den Schlüssel untersuchen und die Ausgabe erzeugen.

HTH

    
Niels Basjes 26.05.2010 07:12
quelle
1

Verwenden Sie die sekundäre Sortierung, um die Benutzer-ID zu sortieren. Auf diese Weise brauchen Sie nichts im Speicher zu haben - streamen Sie einfach die Daten durch und erhöhen Sie Ihren eindeutigen Zähler jedes Mal, wenn Sie die Wertänderung für eine bestimmte Site-ID sehen.

Hier sind einige Dokumentation .

    
SquareCog 24.05.2010 19:22
quelle
0

Es ist oft schneller, HiveQL zu verwenden, um viele einfache Aufgaben zu sortieren. Hive übersetzt Ihre Abfragen in Hadoop MapReduce. In diesem Fall können Sie

verwenden %Vor%

Sie finden vielleicht ein fortgeschritteneres Beispiel hier: Ссылка

    
Datageek 07.09.2011 08:36
quelle

Tags und Links