【问题标题】:Left anti join in spark 1.6.0左反加入火花1.6.0
【发布时间】:2018-02-20 14:40:26
【问题描述】:

我有两个数据框:bigDFsmallDF

来自bigDF 我只想要不在smallDF 中的列。

smallDF 仅包含我不想在bigDF 中包含的 ID

我现在要做的是:

bigDF.join(broadcast(smallDF), Seq("id"), "left_anti")

问题是,spark 1.6.0 不支持 left_anti 连接。

还有其他方法可以实现吗?

附: bigDF 不应该被洗牌(这就是我使用broadcast() 的原因)

【问题讨论】:

  • 我的回答解决了你的问题吗?

标签: apache-spark apache-spark-sql


【解决方案1】:

由于smallDF很小,你可以收集id并使用isin的否定作为:

bigDF
.where(!$"id".isin(smallDF.select($"id").distinct.map(_.getInt(0)).collect():_*))

【讨论】:

  • 其实没有,因为smallDF不够小,驱动没有响应了……最后我用了左连接,where smallDF.id is null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2011-10-18
  • 2017-08-28
  • 2020-02-20
相关资源
最近更新 更多