Scala 将两列的数据帧转换为排序列表

Scala 将两列的数据帧转换为排序列表,scala,dataframe,apache-spark,Scala,Dataframe,Apache Spark,我有一个数据帧,如下所示 year title 2021 Title1234 2021 Title12 2021 Title123 2021 Title12345 2021 Title1 2020 Title2234 2020 Title22 2020 Title223 2020 Title22345 2021 Title

我有一个数据帧,如下所示

year         title
2021         Title1234
2021         Title12
2021         Title123
2021         Title12345
2021         Title1
2020         Title2234
2020         Title22
2020         Title223
2020         Title22345
2021         Title2
我希望以两个级别的排序方式转储列表中title列下的所有数据—第一个是年份级别,第二个是标题长度,两者都是降序排列的

Title12345
Title1234
Title123
Title12
Title1
Title22345
Title2234
Title223
Title22
Title2
我曾尝试通过应用group by on year和collect_set on title来转换dataframe,并在dataframe上迭代并将数据转储到地图中。然后迭代排序的键集,从映射中获取列表并转储到列表中

我正在寻找一种更简单、更直接的方法。

大多数方法都返回一个列对象。因此,的返回值可以用作排序标准,在
orderBy
中:

import org.apache.spark.sql.functions_
df.orderBy($“year”.desc,length($“title”).desc.show()
返回预期结果