Hadoop 如何在配置单元中的select语句中编写子查询

Hadoop 如何在配置单元中的select语句中编写子查询,hadoop,hive,Hadoop,Hive,我正在尝试使用配置单元对子查询进行选择 在foos表中,有以下列: foo1, foo2, foo3_input 是我想要的 select foo1, foo2, foo3 from foos; 是我将执行的 select foo1, foo2, foo3_input from foos; 对于一行中的每个foo3,我要执行以下查询 foo3 = select bar1 from bars where (foo3_input) between val1 and val2; 是否有任何可能

我正在尝试使用配置单元对子查询进行选择

在foos表中,有以下列:

foo1,
foo2,
foo3_input
是我想要的

select foo1, foo2, foo3 from foos;
是我将执行的

select foo1, foo2, foo3_input from foos;
对于一行中的每个foo3,我要执行以下查询

foo3 = select bar1 from bars where (foo3_input) between val1 and val2;
是否有任何可能的方法来构造此查询?

配置单元不支持WHERE子句中的IN、EXISTS或子查询 请参见此
https://issues.apache.org/jira/browse/HIVE-1799

有关配置单元中的where子句,请参见此https://cwiki.apache.org/confluence/display/Hive/LanguageManual+子查询#LanguageManuals子查询Where子句中的子查询

select
    a.foo1, 
    a.foo2,
    b.bar1
from
(
    (select foo1, foo2, foo3_input from foos) a
    left outer join
    (select bar1, foo3_input from bars ) b
    on a.foo3_input = b.foo3_input
 )tmp
 where b.foo3_input between a.foo1, a.foo2
 ;
[编辑]

select
    a.foo1, 
    a.foo2,
    b.bar1
from
(
    (select foo1, foo2, foo3_input from foos) a
    full outer join
    (select bar1, val1, var2 from bars ) b

 )tmp
 where a.foo3_input between b.val1, b.val2
 ;
配置单元版本0.13.0

select
    a.foo1, 
    a.foo2,
    b.bar1
from foos a, bars b
where a.foo3_input between b.val1, b.val2;

谢谢你的链接!你能给我一些解决上述问题的方法吗?谢谢你的回答@JimmyZhang。foo3_输入不属于bars表。您能告诉我表格bars的结构吗@briskIn bars表有以下列bar1、bar2、val1、,val2@brisk,我使用完全外部联接更改我的答案。但是完全外部联接操作可能很耗时。获取错误:失败:ParseException行4:9无法识别子查询源中“(”选择“foo1”)附近的输入。