首页 > 解决方案 > 如何在scala中使用spark数据框找到对称的重复列(2列)?

问题描述

我有下面的数据框,它有两列。

输入数据框:

col1,col2
1,2
2,3
7,0
2,1

在上面的数据框中,第一行和第四行是对称的,应该只考虑一次。我们可以在输出中使用第一行或第四行。

可能的输出数据帧。

可能性1:

col1,col2
2,3
7,0
2,1

可能性2:

col1,col2
1,2
2,3
7,0

标签: scalaapache-sparkapache-spark-sql

解决方案


您可以调用dropDuplicates已排序的数组列:

val df2 = df.withColumn(
    "arr", 
    sort_array(array(col("col1"), col("col2")))
).dropDuplicates("arr").drop("arr")

df2.show
+----+----+
|col1|col2|
+----+----+
|   2|   3|
|   1|   2|
|   7|   0|
+----+----+

推荐阅读