我对PySpark中的连接术语完全感到困惑。我将列出我对这两个连接的理解,我只是想知道我的理解是否正确,因为我发现文档比帮助更令人困惑。
我们从两个数据帧开始:dfA
和dfB
。
dfA.join(dfB, 'user', 'inner')
装置仅连接dfA
和dfB
在用户列上具有相同元素的行。 (用户列上A和B的交集)。
dfA.join(dfB, 'user', 'leftanti')
是指使用dfA
中的元素dfB
中的元素构造一个数据框。
这两个正确吗?
答案 0 :(得分:1)
内部联接=>如果DFB没有DFA记录,则它不返回不匹配的记录。
left anti =>最接近“不存在”
-- NOT EXISTS
SELECT *
FROM dfA
WHERE NOT EXISTS (
SELECT 1
FROM dfB
WHERE dfA.DeptName = dfB.DeptName
)
等效于LEFT OUTER JOIN
SELECT *
FROM dfA
LEFT OUTER JOIN DFB
ON dfA.DeptName = dfB.DeptName
where dfB.DeptName IS NULL;