【发布时间】:2023-03-26 06:54:01
【问题描述】:
以下是代表员工 in_date 和 out_date 的示例数据集。 我必须获得所有员工的最后 in_time。
Spark 在 4 节点独立集群上运行。
初始数据集:
EmployeeID-----in_date-----out_date
1111111 2017-04-20 2017-09-14
1111111 2017-11-02 null
2222222 2017-09-26 2017-09-26
2222222 2017-11-28 null
3333333 2016-01-07 2016-01-20
3333333 2017-10-25 null
df.sort(col(in_date).desc())之后的数据集:
EmployeeID--in_date-----out_date
1111111 2017-11-02 null
1111111 2017-04-20 2017-09-14
2222222 2017-09-26 2017-09-26
2222222 2017-11-28 null
3333333 2017-10-25 null
3333333 2016-01-07 2016-01-20
df.dropDup(EmployeeID):
输出:
EmployeeID-----in_date-----out_date
1111111 2017-11-02 null
2222222 2017-09-26 2017-09-26
3333333 2016-01-07 2016-01-20
预期数据集:
EmployeeID-----in_date-----out_date
1111111 2017-11-02 null
2222222 2017-11-28 null
3333333 2017-10-25 null
但是当我使用sortWithInPartitions 对初始数据集进行排序并进行重复数据删除时,我得到了预期的数据集。
我在这里遗漏了什么大的或小的东西吗?任何帮助表示赞赏。
附加信息:
在本地模式下使用 Spark 执行 df.sort 时,实现了上述预期输出。
我没有做过任何类型的分区,重新分区。
初始数据集来自底层 Cassandra 数据库。
【问题讨论】:
标签: apache-spark apache-spark-sql spark-cassandra-connector apache-spark-dataset