我刚开始使用火种,但我做了一些研究,似乎找不到解决我的问题的答案。我有一个dataframe,在streetID中可以有重复的条目。我需要基于houseNums创建一个(排序)列表。
+---------+---------+
|streetID |houseNum |
+---------+---------+
| 890| 12445|
| 400| 35840|
| 890| 28980|
| 639| 35840|
| 639| 12445|
+---------+---------+
希望结果会是这样。我需要一个UDF来解决这个问题,还是在构建的API中可以解决这个问题?有什么建议吗?
+---------+--------------------+
|streetID |houseNumList |
+---------+--------------------+
| 400| [35840] |
| 890| [12445, 28980] |
| 639| [12445, 35840] |
+---------+--------------------+
发布于 2021-10-01 06:19:18
您可以使用collect_list
返回带有重复项的对象列表。
from pyspark.sql import functions as F
(df.groupBy("streetID")\
.agg(F.collect_set("houseNum").alias('houseNumList')).show()
要将每个元素按列表sort
顺序排列,可以包含函数sort_array
(df.groupBy("streetID")\
.agg(F.sort_array(F.collect_set("houseNum").alias('houseNumList')).show()
这将使您的数字在列表中按升序排列。
https://stackoverflow.com/questions/69407332
复制