2017-08-16 698 views
3

我有一個表,其中包含id,偏移量,文本。假設輸入:Pyspark groupby然後在組內排序

id offset text 
1 1  hello 
1 7  world 
2 1  foo 

我想輸出,如:

id text 
1 hello world 
2 foo 

我使用:

df.groupby(id).agg(concat_ws("",collect_list(text)) 

但我不知道如何保證文本的順序。我在groupby之前做過sort的數據,但我聽說groupby可能會洗牌數據。在groupby數據之後有沒有辦法在組內做sort

回答

0

添加sort_array

from pyspark.sql.functions import sort_array 

df.groupby(id).agg(concat_ws("", sort_array(collect_list(text)))) 
+0

這樣可不行,我的排序關鍵字的偏移,而不是字符串本身。 –