Hive 如何实现左/右外部联接以替换非配置单元查询?

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 | +------

我在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  |
+----------+---------+-------------+---------+--+
| 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