Wie listet man in PySpark 1.5.0 alle Elemente der Spalte `y` auf der Grundlage der Werte der Spalte` x` auf?
Die folgende Frage bezieht sich speziell auf Version 1.5.0 von PySpark, da PySpark ständig um neue Funktionen erweitert wird.
Wie listest du alle Elemente der Spalte @ auy
basierend auf den Werten der Spaltex
? Beispielsweise
rdd = sc.parallelize([ {'x': "foo", 'y': 1},
{'x': "foo", 'y': 1},
{'x': "bar", 'y': 10},
{'x': "bar", 'y': 2},
{'x': 'qux', 'y':999}])
df = sqlCtx.createDataFrame(rdd)
df.show()
+---+---+
| x| y|
+---+---+
|foo| 1|
|foo| 1|
|bar| 10|
|bar| 2|
|qux|999|
+---+---+
Ich hätte gerne etwas wie:
+---+--------+
| x| y |
+---+--------+
|foo| [1, 1] |
|bar| [10, 2]|
|bar| [999] |
+---+--------+
Die Reihenfolge spielt keine Rolle. In Pandas kann ich diese Benutzergruppe erreichen, indem ich:
pd = df.toPandas()
pd.groupby('x')['y'].apply(list).reset_index()
Jedoch,groupBy
ie Funktionalität von @ aggregation in Version 1.5.0 scheint sehr eingeschränkt zu sein. Irgendeine Idee, wie diese Einschränkung überwunden werden kann?