2017-08-16 701 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

这样可不行,我的排序关键字的偏移,而不是字符串本身。 –