WHERE子句中的Hive简单子查询不起作用

时间:2014-07-29 10:00:12

标签: subquery hive external

我是hive的新手,并试图在我在HDFS文件上创建的2个外部表上执行以下简单的子查询示例。

item_id和k_item_id同时都是bigint。任何人都可以帮我理解确切的错误原因吗?

hive> SELECT item_id FROM hivedev.ext_c_oi_item2 WHERE 
             item_id NOT IN (SELECT k_item_id FROM hivedev.ext_c_ksn2);

错误:

  

失败:ParseException行1:71无法识别'SELECT''附近的输入''k_item_id''来自'表达式规范

1 个答案:

答案 0 :(得分:1)

Hive不支持IN子句中的子查询。相反,你可以做一个左外连接,右边的过滤器为null,以实现相同的逻辑:

SELECT ext_c_oi_item2.item_id
FROM hivedev.ext_c_oi_item2
LEFT OUTER JOIN hivedev.ext_c_ksn2
ON ext_c_oi_item2.item_id = ext_c_ksn2.k_item_id
WHERE ext_c_ksn2.k_item_id IS NULL;