左反加入火花1.6.0

时间:2018-02-20 14:40:27

标签: apache-spark apache-spark-sql

我有两个数据框:bigDFsmallDF

来自bigDF我只希望列不在smallDF

smallDF仅包含bigDF

中我不想要的ID

我现在要做的是:

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

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

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

P.S。 bigDF不应该被洗牌(这就是我使用broadcast()

的原因

1 个答案:

答案 0 :(得分:0)

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

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