我的数据框A
的列id
中有一个ID,此列中的条目是数据框B
中的ID的超集。
我想在数据框id
和A
中获得B
的补充。换句话说:来自A
的所有ID都不在B
。
Spark可以使用过滤器执行此操作:
A.filter(not('id.isin(B.select('id)))
但是,由于isin
需要varags,因此无法正常工作。现在我可以这样做:
A.filter(not('id.isin(B.select('id)).distinct.collect.map(r => r(0)): _*)
但是当使用数百万个ID时,这是非常沉重的,因为spark无法分配此计算。有没有办法在不使用isin
的情况下实现这种补充?也许加入?