Auswählen zufällige Elemente aus einer Funke GroupedData Objekt
Ich bin neu in der Verwendung von Spark in Python und nicht in der Lage gewesen, dieses problem zu lösen: Nach dem ausführen groupBy
auf eine pyspark.sql.dataframe.DataFrame
df = sqlsc.read.json("data.json")
df.groupBy('teamId')
wie können Sie N
Stichproben aus jeder entstehenden Gruppe (gruppiert nach teamId) ohne Ersatz?
Ich bin im Grunde versucht, zu entscheiden N
zufällige Benutzer von jedem team, vielleicht mit groupBy
ist falsch, mit zu beginnen?
InformationsquelleAutor Nyxynyx | 2015-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, es ist irgendwie falsch.
GroupedData
ist nicht wirklich entwickelt, für die ein Zugriff auf Daten. Es beschreibt nur die Gruppierung der Kriterien und bietet aggregationsmethoden. Siehe meine Antwort auf Mit groupBy-Zündkerzen und immer wieder zu einem DataFrame für mehr details.Ein weiteres problem mit dieser Idee ist die Auswahl
N random samples
. Es ist eine Aufgabe, die schwer zu erreichen ist parallel ohne psychische Gruppierung von Daten, und es ist nicht etwas, das passiert, wenn mancall
groupBy auf eineDataFrame
:Gibt es mindestens zwei Möglichkeiten, damit umzugehen:
convert to RDD,
groupBy
und Durchführung der lokalen sampling -window-Funktionen
aber ich fürchte, beides wird sehr teuer sein. Wenn die Größe der einzelnen Gruppen ist ausgewogen und relativ groß, ich würde einfach verwenden
DataFrame.randomSplit
.Wenn die Anzahl der Gruppen ist relativ klein, ist es möglich, zu versuchen, etwas anderes:
Spark 1.5+ können Sie ersetzen
udf
mit einem AufrufsampleBy
Methode:Wird es nicht geben Ihnen genaue Anzahl der Beobachtungen sollte aber gut genug sein, die meisten der Zeit, die so lange als Anzahl der Beobachtungen pro Gruppe ist groß genug, um die richtige Muster. Sie können auch
sampleByKey
auf einem RDD in ähnlicher Weise.rowNumer
esrow_number
für mich werden könnte, weil ein Pyspark update.InformationsquelleAutor zero323