删除Apache Spark DataFrame中的重复项,并保留尚未删除的值的行?

问题描述 投票:0回答:1

假设我有一个如下的DataFrame:

+-------+-------+
|column1|column2|
+-------+-------+
|   1   |   A   |  
|   1   |   B   |   
|   2   |   A   |   
|   2   |   B   |   
|   3   |   B   |  
+-------+-------+

我希望能够找到column1column2中每个唯一元素适合的位置的对完全一对。因此,我希望结果是:

+-------+-------+
|column1|column2|
+-------+-------+
|   1   |   A   |   
|   2   |   B   |   
+-------+-------+

[注意,由于(A)已与1配对,因此删除了对(2,A)。由于B已与2配对而也删除了3对。

使用Spark可以做到这一点吗?

到目前为止,我想出的唯一解决方案是只运行.collect(),然后每行mapping并将A和B的每个值添加到集合中。因此,当我遇到一行并且集合A或B中的一个元素已经在集合中时,我将该行删除。

感谢阅读。

dataframe apache-spark apache-spark-sql duplicates
1个回答
0
投票

这应该以最少的代码实现您想要的:

df
  .dropDuplicates("column1").dropDuplicates("column2")
  .show()

给予:

+-------+-------+
|column1|column2|
+-------+-------+
|      3|      B|
|      1|      A|
+-------+-------+

请注意,由于未给出顺序,因此排序可能不确定,>

© www.soinside.com 2019 - 2024. All rights reserved.