scala - 从 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
此架构的方法?
解决方案
使用 joinWith 后,得到的数据框只有两列。Spark 不支持删除嵌套列的重复项。
您可以使用 join 来展平列,而不是 joinWith,您可以指定要为其删除重复项的列。
推荐阅读
- javascript - React Suspense 代码片段中的 3 个核心问题是什么?
- powerpoint - 锄头改装 PowerPoint 幻灯片以适应 8.5 X 11 论文
- c++ - 计算从文件中读取的字符
- html - 让我的背景出现在实时服务器中
- c - 将 double 转换为 int 仅适用于常量
- angular - 将数据从 Observable 传递到 Ionic 5/Angular 中的全局变量
- javascript - Material UI v5 - 选项卡样式覆盖
- azure - 在 YAML 管道中将多个 Azure WebJobs 部署到单个 Azure AppService
- automation - 赛普拉斯无法从 window.__coverage__ 获取覆盖率报告
- java - Twitter API 使用 Oauth1.0 身份验证失败