2013-08-23 8 views
8

Hallo ich wollte lernen, wie man die Wortzählung nach Wert in hadoop.I wissen, Hadoop dauert die Sortierung von Schlüsseln, aber nicht nach Werten.Wie sortiere ich die Wortzählung nach Wert in hadoop?

ich weiß, die Werte sortieren wir

, aber ich bin etwas verwirrt bei der Anwendung zusammen, um diese Konzepte einen Partitionierer, groupingcomparator und sortcomparator haben muss das Wort Wert zählen zu sortieren.

Brauchen wir noch einen Map-Reduce-Job, um dasselbe zu erreichen, oder sonst einen Combiner, um die Vorkommen zu zählen und dann hier zu sortieren und dasselbe zum Reducer zu emittieren?

kann jemand erklären, wie man Wortzählungsbeispiel durch Werte sortiert?

+0

Haben Sie vor 8 Stunden nicht dieselbe Frage gestellt? [http://stackoverflow.com/questions/18395998/hadoop-map-reduce-secondary-sorting] – DDW

+0

ja ich bin verwirrt bei der Anwendung dieser Konzepte insgesamt – user1585111

Antwort

7

Sie müssen einen zweiten mapreduce Job haben. Wenn Sie nicht auf die Gesamtanzahl schließen (was der erste MR-Job macht), wie können Sie nach Wert sortieren (die Anzahl der Wörter)? Logisch nicht möglich.

+0

ich meine nur Sortierung basierend auf Anzahl der Vorkommen – user1585111

+0

Ja. Ich habe das gleiche Verständnis. Um die Anzahl der Vorkommen zu ermitteln, müssen Sie einen MR-Job ausführen. Nur am Ende der Verarbeitung eines Schlüssels kann die Anzahl der Ereignisse bestimmt werden. Wenn der nächste Schlüssel kommt, kommt der frühere Schlüssel aus dem Kontext für Reduce-Task. Es ist also nicht möglich, das Wort als Schlüssel zu verwenden und nach Wert zu sortieren. Sie müssen den Out zu einem anderen MR-Job leiten und den Wert als Schlüssel für den zweiten Job verwenden. – Rags

+0

ich bin nur ein Anfänger, Ihre Antwort ist hilfreich. Danke! – user1585111

6

Dies wird als sekundäre Sortierung bezeichnet. Einzelheiten siehe this und this.

+1

Die sekundäre Sortierung hilft nicht bei der Sortierung nach Anzahl der Vorkommen, wie in der Frage gefragt. Unmöglich zu erreichen !. – rbyndoor

+0

@ruby: Bei der Frage geht es darum, das Ergebnis eines Wordcount-Jobs basierend auf Werten zu sortieren, die die Anzahl jedes Worts angibt. Was lässt dich denken, dass dies unmöglich ist? – Tariq

+1

Nein. Aufgrund von Benutzerkommentaren ist es sehr klar, dass user1585111 nach der Anzahl der Vorkommen sortieren möchte. Das ist nicht das, was eine sekundäre Sorte tun kann. – rbyndoor