2016-12-03 21 views
4

所以我有一個火花數據框,看起來像:GroupByKey和創造價值的名單pyspark SQL數據幀

a | b | c 
5 | 2 | 1 
5 | 4 | 3 
2 | 4 | 2 
2 | 3 | 7 

我想組由,創建列B值的列表,忘記c。輸出數據框應該是:

a | b_list 
5 | (2,4) 
2 | (4,3) 

我該如何去做這與一個pyspark sql數據框?

謝謝! :)

回答

9

以下是獲取該數據框的步驟。

>>> from pyspark.sql import functions as F 
>>> 
>>> d = [{'a': 5, 'b': 2, 'c':1}, {'a': 5, 'b': 4, 'c':3}, {'a': 2, 'b': 4, 'c':2}, {'a': 2, 'b': 3,'c':7}] 
>>> df = spark.createDataFrame(d) 
>>> df.show() 
+---+---+---+ 
| a| b| c| 
+---+---+---+ 
| 5| 2| 1| 
| 5| 4| 3| 
| 2| 4| 2| 
| 2| 3| 7| 
+---+---+---+ 

>>> df1 = df.groupBy('a').agg(F.collect_list("b")) 
>>> df1.show() 
+---+---------------+ 
| a|collect_list(b)| 
+---+---------------+ 
| 5|   [2, 4]| 
| 2|   [4, 3]| 
+---+---------------+ 
+0

正是我所需要的!謝謝。你能建議一些資源來改善嗎? – user2253546

+0

我沒有得到關於資源的問題。如果它解決了你的問題,請接受答案,以便對其他人有幫助。謝謝。 – abaghel

+0

@ user2253546你可以閱讀文檔。這裏是https://spark.apache.org/docs/1.6.2/api/java/org/apache/spark/sql/functions.html,很多有用的SQL函數。 –