如何加入 Spark 数据集 A 和 B 并标记 A 中未加入的记录?

Posted

技术标签:

【中文标题】如何加入 Spark 数据集 A 和 B 并标记 A 中未加入的记录?【英文标题】:How to join Spark datasets A and B and mark records in A which were not joined? 【发布时间】:2020-01-18 05:16:05 【问题描述】:

我有两个数据集 A 和 B,分别是 TypeA 和 TypeB。然后我基于列(我们称之为“键”)加入数据集以获取数据集 C。之后,我需要丢弃数据集 A 中与 B 连接的事件,只保留 A 中无法连接的事件。我该怎么做?

【问题讨论】:

使用键加入任意列。过滤那个为空的任意列。 没听懂。你能解释一下吗? 好像是重复的Left Anti join in Spark? 这是一个常见问题解答。在考虑发布之前,请始终在谷歌上搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有或没有您的特定字符串/名称和站点:***.com 和标签,并阅读许多答案。如果您发布问题,请使用一个短语作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。 【参考方案1】:

您正在寻找的是左反连接。查看这篇文章了解更多详情Left Anti join in Spark?

【讨论】:

感谢您的回答。有没有办法避免加入操作(如果我理解正确,反加入也是一种加入)?我已经在 A 和 B 之间执行一次连接以获得结果数据集,现在我想看看是否有办法找出 A 中的未连接条目,而不用 B 执行连接 其实你只需要一个joinc_filtered = a.join(b, some_condition, 'left_anti')你可以跳过非过滤c的部分 请不要重复回答,(标记为)关闭。

以上是关于如何加入 Spark 数据集 A 和 B 并标记 A 中未加入的记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何加入两个镶木地板数据集?

Spark 3.0 排序并应用于组 Scala/Java

在 Spark 中合并数据框

迭代多个 CSV 并加入 Spark SQL

Spark 数据集连接和聚合列

如何从 kafka 中的两个生产者那里摄取数据并使用 Spark 结构化流加入?