我完全被PySpark中的连接术语弄糊涂了。我将列出我是如何理解其中两个连接的,我只想知道我的理解是否正确,因为我发现文档更令人困惑而不是有用。
我们从两个数据帧开始: dfA dfB .
dfA
dfB
dfA.join(dfB, 'user', 'inner')
dfA 和 dfB 在用户列上具有公共元素。(用户列上A和B的交点)。
dfA.join(dfB, 'user', 'leftanti')
意味着使用中的元素构造数据帧 dfA 在里面 dfB .
内部联接=>如果DFB没有DFA的记录,那么它不会返回不匹配的记录。
-- NOT EXISTS SELECT * FROM dfA WHERE NOT EXISTS ( SELECT 1 FROM dfB WHERE dfA.DeptName = dfB.DeptName )
SELECT * FROM dfA LEFT OUTER JOIN DFB ON dfA.DeptName = dfB.DeptName where dfB.DeptName IS NULL;