删除Apache Spark DataFrame中的重复项,并保留尚未删除的值的行?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除Apache Spark DataFrame中的重复项,并保留尚未删除的值的行?相关的知识,希望对你有一定的参考价值。
假设我有一个如下的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|
+-------+-------+
请注意,由于未给出顺序,因此排序可能不确定,>
以上是关于删除Apache Spark DataFrame中的重复项,并保留尚未删除的值的行?的主要内容,如果未能解决你的问题,请参考以下文章
Apache Spark 在 DataFrame 中插入多行
如何在 Apache Spark 中反转排列 DataFrame
值 createGlobalTempView 不是 apache.org.spark.sql.DataFrame 的成员