Hive 如何实现左/右外部联接以替换非配置单元查询?
我在Hive中有两个表:empSrc和empTrg: 我想找到empSrc中的记录,但empTrg中缺少这些记录。 我的查询工作正常:Hive 如何实现左/右外部联接以替换非配置单元查询?,hive,hiveql,Hive,Hiveql,我在Hive中有两个表:empSrc和empTrg: 我想找到empSrc中的记录,但empTrg中缺少这些记录。 我的查询工作正常: select S.* from empSrc S where S.empid not in (select T.empid from empTrg T); +----------+---------+-------------+---------+--+ | s.empid | s.dept | s.ph | s.role | +------
select S.* from empSrc S
where S.empid not in (select T.empid from empTrg T);
+----------+---------+-------------+---------+--+
| s.empid | s.dept | s.ph | s.role |
+----------+---------+-------------+---------+--+
| e2 | admin | 6677889933 | SE |
+----------+---------+-------------+---------+--+
问题是这个查询是一个叉积。
是否有任何等效的左外联接查询可以使用?
左/右外部联接是否有助于提高性能?
上述场景是一个演示场景,在实际数据中我有大约1200万条记录。查询从empSrc S中选择S.*
其中S.empid不在select T中。empid from empTrg T实际上不执行交叉连接。没有问题
相同的逻辑可以在不存在的情况下复制
或者左连接
select S.* from empSrc S
where S.empid not in (select T.empid from empTrg T);
+----------+---------+-------------+---------+--+
| s.empid | s.dept | s.ph | s.role |
+----------+---------+-------------+---------+--+
| e2 | admin | 6677889933 | SE |
+----------+---------+-------------+---------+--+
select s.*
from empSrc s
where not exists (select 1 from empTrg t where t.empid = s.empid)
select s.*
from empSrc s
left join empTrg t on t.empid = s.empid
where t.empid is null --condition to check for non existent records