为什么 Hive 查询不支持 IN/EXIST 运算符?

Tie*_*yen 2 sql hadoop hive

我看一下Hive 语言手册

并认识到 Hive 查询不支持 IN/EXIST 运算符,他们建议使用 LEFT SEMI JOIN 作为替代。你知道原因吗?

Bal*_*man 5

Hive 支持 in/exist 运算符,但不支持 in 子查询in

作为替代方案,您可以使用左半连接。

以下在 Hive 中是不可能的

SELECT a.key, a.value
  FROM a
  WHERE a.key in
   (SELECT b.key
    FROM B);
Run Code Online (Sandbox Code Playgroud)

可以使用左半连接重写上面的内容。

SELECT a.key, a.val
   FROM a LEFT SEMI JOIN b on (a.key = b.key)
Run Code Online (Sandbox Code Playgroud)

检查这个