我无法在元组数据集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
方法写入列参数?
答案 0 :(得分:4)
使用joinWith之后,获得的数据框只有两列。而且Spark不支持为嵌套列删除重复项。
您可以使用join来使列变平,而不是joinWith,后者可以指定要dropDuplicates的列。