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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除Apache Spark DataFrame中的重复项,并保留尚未删除的值的行?相关的知识,希望对你有一定的参考价值。

假设我有一个如下的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中的一个元素已经在集合中时,我将该行删除。

感谢阅读。

答案

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

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

给予:

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

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

以上是关于删除Apache Spark DataFrame中的重复项,并保留尚未删除的值的行?的主要内容,如果未能解决你的问题,请参考以下文章

java的怎么操作spark的dataframe

Apache Spark SQL 上下文删除重复项

PySpark DataFrame 无法删除重复项

Apache Spark 在 DataFrame 中插入多行

如何在 Apache Spark 中反转排列 DataFrame

值 createGlobalTempView 不是 apache.org.spark.sql.DataFrame 的成员