java - 如何对Java中的列组合排序火花数据框?

Posted

技术标签:

【中文标题】java - 如何对Java中的列组合排序火花数据框?【英文标题】:How to sort spark dataframe on the combination of columns in Java? 【发布时间】:2020-09-17 07:50:03 【问题描述】:

我在 Java 中有一个 spark 数据框,如下所示:

我希望它根据“Col3”进行排序,但 Col1 和 Col2 的所有值都应该在一个组中。 结果应该如下所示:

【问题讨论】:

【参考方案1】:

groupBy() 函数在聚合期间使用,而您的需求只需要 orderBy()

假设数据帧 df 包含 3 列 Col1、Col2、Col3,您可以在 Spark 中执行以下操作

val sortedDf = df.orderBy(col("Col1").desc,col("Col2").desc,col("Col3").asc)

这里有同样的 POC SQLFIDDLE

【讨论】:

这很有帮助,但没有完全按照我想要的方式工作,所以不得不采取另一种方法。 是因为方法还是数据集? 这就是方法。如果您将共享的 SQLFIDDLE 与我作为有问题的输出进行比较,您将得到它。您只是按降序制作 col1 和 col2 。但这不是我在这里所期望的。

以上是关于java - 如何对Java中的列组合排序火花数据框?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spark 中对包含日期和时间值的列进行排序?

如何组合两个数据框并自然地对混合字母数字类型的列进行排序?

使用 scala 使用布尔运算折叠火花数据框中的列

将行值转换为火花数据框中的列数组

将火花数据帧写入固定宽度文件java spark

遍历火花数据框中的列并计算最小值最大值