假设我有一个如下的DataFrame:
+-------+-------+
|column1|column2|
+-------+-------+
| 1 | A |
| 1 | B |
| 2 | A |
| 2 | B |
| 3 | B |
+-------+-------+
我希望能够找到column1和column2中每个唯一元素适合的位置的对完全一对。因此,我希望结果是:
+-------+-------+
|column1|column2|
+-------+-------+
| 1 | A |
| 2 | B |
+-------+-------+
[注意,由于(A)已与1配对,因此删除了对(2,A)。由于B已与2配对而也删除了3对。
使用Spark可以做到这一点吗?
到目前为止,我想出的唯一解决方案是只运行.collect()
,然后每行mapping
并将A和B的每个值添加到集合中。因此,当我遇到一行并且集合A或B中的一个元素已经在集合中时,我将该行删除。
感谢阅读。
这应该以最少的代码实现您想要的:
df
.dropDuplicates("column1").dropDuplicates("column2")
.show()
给予:
+-------+-------+
|column1|column2|
+-------+-------+
| 3| B|
| 1| A|
+-------+-------+
请注意,由于未给出顺序,因此排序可能不确定,>