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,groupByie Funktionalität von @ aggregation in Version 1.5.0 scheint sehr eingeschränkt zu sein. Irgendeine Idee, wie diese Einschränkung überwunden werden kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage