Wie funktioniert die Funktion Distinct () in Spark?
Ich bin ein Neuling auf Apache Spark und war lernen grundlegende Funktionalitäten.
Hatte einen kleinen Zweifel.Angenommen ich habe ein RDD von Tupeln (Schlüssel, Wert) - und wollte, um einige Einzelstücke aus Ihnen heraus. Benutze ich distinct() Funktion. Ich Frage mich, auf welcher Grundlage die Funktion betrachten, die Tupel als disparate..? Ist es auf der Grundlage der Schlüssel oder Werte oder beides?
InformationsquelleAutor der Frage preetham madeti | 2015-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
.distinct() ist auf jeden Fall tun, einen shuffle in Partitionen. Um zu sehen, mehr von dem, was passiert ist, führen Sie einen .toDebugString auf Ihre RDD.
was für ein RDD Beispiel habe ich (myRDDPreStep schon ist hash-partitioniert nach Schlüssel beibehalten von StorageLevel.MEMORY_AND_DISK_SER und geprüfte), zurück:
Beachten Sie, dass es effizientere Möglichkeiten, um eine deutliche betreffen weniger mischt, vor ALLEM, wenn Ihr RDD ist bereits partitioniert in eine intelligente Art und Weise und die Partitionen sind nicht übermäßig verzerrt.
Sehen Gibt es eine Möglichkeit zu umschreiben Funke RDD distinct zu verwenden, mapPartitions statt der klaren?
und
Apache Spark: Was ist das äquivalent Umsetzung von RDD.groupByKey() mit RDD.aggregateByKey()?
InformationsquelleAutor der Antwort Glenn Strycker
Den API docs für RDD.distinct() nur eine ein-Satz-Beschreibung:
Aus der jüngsten Erfahrung kann ich dir sagen, dass in einem Tupel-RDD das Tupel als ganzes betrachtet wird.
Wenn Sie möchten, verschiedene Schlüssel oder unterschiedliche Werte, dann ist je nach genau das, was Sie erreichen möchten, können Sie entweder:
A. call
groupByKey()
zu verwandeln{(k1,v11),(k1,v12),(k2,v21),(k2,v22)}
zu{(k1,[v11,v12]), (k2,[v21,v22])}
; oderB. Streifen entweder der Schlüssel oder Werte durch aufrufen
keys()
odervalues()
gefolgt vondistinct()
Ab diesem schreiben (Juni 2015) UC Berkeley + EdX mit einer kostenlosen online-Kurs Einführung in Big Data und Apache Spark die Hände auf die Praxis mit diesen Funktionen.
InformationsquelleAutor der Antwort Paul
Justin Pihony richtig ist.Distinct verwendet die hashCode-und equals-Methode der Objekte für diese Bestimmung. Seine Rückkehr, die unterschiedliche Elemente(Objekt)
Verschiedene
Wenn Sie sich bewerben möchten verschiedene auf-Taste.
In diesem Fall reduzieren, ist die bessere option
ReduceBy
Ausgabe:-
InformationsquelleAutor der Antwort Amit Dubey
distinct
verwendet diehashCode
undequals
- Methode der Objekte für diese Bestimmung. Tupel kommen, gebaut in und mit der Gleichheit Mechanismen delegieren von unten in die Gleichheit und die position jedes Objekts. Alsodistinct
wird gegen die gesamteTuple2
Objekt. Als Paul wies darauf hin, rufen Siekeys
odervalues
und danndistinct
. Oder schreiben Sie Ihre eigenen Werte überaggregateByKey
, die würde halten Sie die Taste pairing. Oder, wenn Sie wollen, dass der eindeutige Schlüssel haben, dann könnten Sie eine regelmäßigeaggregate
InformationsquelleAutor der Antwort Justin Pihony
Sieht es aus wie die
distinct
loswerden (Schlüssel, Wert) - Duplikate.In dem Beispiel weiter unten (1,20) und (2,20) zweimal wiederholt werden in
myRDD
, aber nach einerdistinct()
, werden die Duplikate entfernt.InformationsquelleAutor der Antwort user3654449