我怎样才能在Hive中使用In子句我想在Hive中编写类似的东西从y中选择x,其中yz in(从y中选择不同的z)顺序x; 但是我没有找到任何方法这样做..我在Hive 0.7中尝试了In子句它抛出了错误,我尝试了Find_in_Set ..使用find_in_set(yz,subquery)..但是工作失败了.
我想在Hive上做这个.如果有人知道如何在Hive中这样做,请帮助我..
感谢和问候,Atul
www*_*www 36
您可以使用半连接(https://cwiki.apache.org/Hive/languagemanual-joins.html):
LEFT SEMI JOIN以有效的方式实现相关的IN/EXISTS子查询语义.由于Hive当前不支持IN/EXISTS子查询,因此您可以使用LEFT SEMI JOIN重写查询.使用LEFT SEMI JOIN的限制是右侧表只应在连接条件(ON子句)中引用,而不能在WHERE-或SELECT子句中引用.
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)
根据https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select:
"Hive不支持WHERE子句中的IN,EXISTS或子查询."
您可能需要查看:https: //issues.apache.org/jira/browse/HIVE-801
https://issues.apache.org/jira/browse/HIVE-1799
| 归档时间: |
|
| 查看次数: |
80075 次 |
| 最近记录: |