gpt4 book ai didi

java - Java 中的 Spark 自定义排序列

转载 作者:行者123 更新时间:2023-12-02 11:04:40 26 4
gpt4 key购买 nike

我有以下数据集结果。

1.

+------+---------+--------+
| Col1 | Col2 | NumCol |
+------+---------+--------+
| abc | jun2016 | 25 |
| aac | jun2017 | 28 |
| aac | dec2017 | 30 |
| aac | apr2018 | 45 |
+------+---------+--------+

应用排序后,我得到以下结果。

+------+---------+--------+
| Col1 | Col2 | NumCol |
+------+---------+--------+
| aac | apr2018 | 45 |
| aac | dec2017 | 30 |
| aac | jun2017 | 28 |
| abc | jun2018 | 25 |
+------+---------+--------+

但应该是

+------+---------+--------+
| Col1 | Col2 | NumCol |
+------+---------+--------+
| aac | jun2017 | 28 |
| aac | dec2017 | 30 |
| aac | apr2018 | 45 |
| abc | jun2018 | 25 |
+------+---------+--------+

按照时间顺序。我怎样才能实现同样的目标。

2。当 Week 存在时

当我有如下“周”列时

+------+-----------------------+--------+
| Col1 | Week | NumCol |
+------+-----------------------+--------+
| aac | 02/04/2018-02/10/2018 | 45 |
| aac | 02/11/2018-02/17/2018 | 25 |
| aac | 01/28/2018-02/03/2018 | 30 |
+------+-----------------------+--------+

我希望按如下方式排序。

+------+-----------------------+--------+
| Col1 | Week | NumCol |
+------+-----------------------+--------+
| aac | 01/28/2018-02/03/2018 | 30 |
| aac | 02/04/2018-02/10/2018 | 45 |
| aac | 02/11/2018-02/17/2018 | 25 |
+------+-----------------------+--------+

上面我想将 Week 列的日期解析为新的 Column dateweek ,然后对 Week 列进行排序并在返回数据集之前删除。

对我来说有点挑战性。

对于#1,我关注了 this但问题是,如果假设Jan2016、Feb2016、Jan2017,它会被排序为Jan2016、Jan2017、Feb2016

需要2帮助

最佳答案

分割一周并根据日期排序。

import org.apache.spark.sql.functions.split
df.withColumn("_tmp", split($"Week", "-")).select($"Col1", $"Week", $"NumCCol1", $"_tmp".getItem(0).as("_sort")).sort("_sort").drop("_sort").show()

输出-

+----+---------------------+--------+
|Col1|Week |NumCCol1|
+----+---------------------+--------+
|aac |01/28/2018-02/03/2018|30 |
|aac |02/04/2018-02/10/2018|45 |
|aac |02/11/2018-02/17/2018|25 |
+----+---------------------+--------+

关于java - Java 中的 Spark 自定义排序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51062936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com