首页 > 解决方案 > 从 Spark 中的元组日期集中删除重复项

问题描述

我在删除元组数据集中的重复行时遇到问题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此架构的方法?

标签: scalaapache-sparkdatasettuples

解决方案


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

您可以使用 join 来展平列,而不是 joinWith,您可以指定要为其删除重复项的列。


推荐阅读