hive中的 left semi join
LEFT SEMI JOIN 是 IN/EXISTS 子查询的一种更高效的实现 。 Hive 当前 没有 实现 IN/EXISTS 子查询,所以你可以用 LEFT SEMI JOIN 重写你的子查询语句 。LEFT SEMI JOIN 的限制是, JOIN 子句中右边的表只能在 ON 子句中设置过滤条件,在 WHERE 子句、SELECT 子句或其他地方过滤都不行。 SELECT a.key, a.value FROM a WHERE a.key in (SELECT b.key FROM B); 可以被重写为: SELECT a.key, a.val FROM a LEFT SEMI JOIN b on (a.key = b.key) 来源: oschina 链接: https://my.oschina.net/u/2000675/blog/748559