小编Thi*_*790的帖子

Spark-sortWithInPartitions超过排序

以下是代表员工in_date和out_date的样本数据集。我必须获取所有员工的最后in_time。

Spark在4节点独立群集上运行。

初始数据集:

员工ID -----入职日期-----离职日期

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 
Run Code Online (Sandbox Code Playgroud)

之后的数据集df.sort(col(in_date).desc()):

员工编号-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 
Run Code Online (Sandbox Code Playgroud)
df.dropDup(EmployeeID):  
Run Code Online (Sandbox Code Playgroud)

输出:

员工ID -----入职日期-----离职日期

1111111    2017-11-02    null 
2222222    2017-09-26    2017-09-26 
3333333    2016-01-07    2016-01-20 
Run Code Online (Sandbox Code Playgroud)

预期数据集:

员工ID -----入职日期-----离职日期

1111111    2017-11-02   null 
2222222    2017-11-28   null 
3333333    2017-10-25   null 
Run Code Online (Sandbox Code Playgroud)

但是,当我使用进行初始数据集排序sortWithInPartitions并进行重复数据删除时,我得到了预期的数据集。我在这里错过了大大小小的东西吗?任何帮助表示赞赏。

附加信息: 当在本地模式下用Spark执行df.sort时,实现了上述预期输出。
我没有做任何分区,重新分区。初始数据集是从基础Cassandra数据库获得的。

apache-spark apache-spark-sql spark-cassandra-connector apache-spark-dataset

4
推荐指数
1
解决办法
3399
查看次数