我有2个数据框。在一个数据帧中只有一列,每个单元格中都有值列表。需要检查其他数据框中是否存在这些值中的任何一个。 我目前正在两个数据帧上进行收集,并将两者都视为执行操作的行列表。现在的问题是,既然收集完成了,整个数据帧都将在驱动程序上。可以通过并行处理来完成吗?
答案 0 :(得分:0)
将两个DF保存为SPARK SQL临时视图,并使用EXISTS对两个DF编写SQL。还有其他方法,但这听起来像通过(嵌套的)相关子查询进行存在性检查。火花2.x。假定。
来自databricks文档的示例:
%sql
SELECT *
FROM employee A
WHERE NOT EXISTS (SELECT 1
FROM visit B
WHERE B.employee_id = A.employee_id)
对于记录,似乎有一些这样的问题,并且SQL再次流行起来:在SPARK SQL中,计划对EXISTS使用LEFT SEMI联接,对NOT EXISTS使用LEFT ANTI联接计划基于EXISTS的子查询。