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

时间:2019-01-17 09:32:20

标签: scala apache-spark dataset tuples

我无法在元组数据集Dataset[(LeftDs, RightDs)]中删除重复的行

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

val comparableDs = leftDs.joinWith(
   rightDs,
   fuzzyMatch(leftDs.col("name"), rightDs.col("officialName"))
)

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

val resultDs = comparableDs.dropDuplicates("_1.name", "_2.officialName")

但是出现此错误: 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)

如何为此模式的dropDuplicates方法写入列参数?

1 个答案:

答案 0 :(得分:4)

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

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