从Spark中的元组Dateset删除重复项

Azi*_*zik 1 scala tuples dataset apache-spark

我在删除元组数据集中的重复行时遇到麻烦 Dataset[(LeftDs, RightDs)]

试图像这样连接两个数据集:

val comparableDs = leftDs.joinWith(
   rightDs,
   fuzzyMatch(leftDs.col("name"), rightDs.col("officialName"))
)
Run Code Online (Sandbox Code Playgroud)

我想删除两个字段的重复项:

val resultDs = comparableDs.dropDuplicates("_1.name", "_2.officialName")
Run Code Online (Sandbox Code Playgroud)

但是得到这个错误: Cannot resolve column name "_1.name" among (_1, _2);

这是以下内容的架构comparableDs

root
 |-- _1: struct (nullable = false)
 |    |-- id: string (nullable = true)
 |    |-- name: string (nullable = true)
 |-- _2: struct (nullable = false)
 |    |-- id: string (nullable = true)
 |    |-- category: string (nullable = true)
 |    |-- officialName: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

如何dropDuplicates为该架构的方法编写列参数?

Jia*_*iao 6

使用joinWith之后,获得的数据框只有两列。而且,Spark不支持为嵌套列删除重复项。

您可以使用join来使列变平,而不是joinWith,后者可以指定要dropDuplicates的列。