蜂巢是否支持选择选择?(Does Hive support Select in Select?)

2019-10-19 10:37发布

在蜂巢可能的代码波纹管,至极一些变化?:

insert into table webmap
select a.res reference, b.res resource, 
(select count(ip) from weblog where resource=a.res and referer=b.res) weight
from toprefres a join toprefres b;

我运行在蜂房-0.10.0-cdh4.5.0和得到了错误:FAILED:ParseException的线3:1不能在表达规范识别邻近“选择”“计数”“(”输入

支持如果选择在蜂巢选择!

我终于想通了答案:

insert into table webmap
select refres.reso,refres.refe, count(ip) weight from 
weblog join (select a.res refe, b.res reso from toprefres a join toprefres b) refres on
trimrslash(weblog.resource)=refres.reso and trimrslash(weblog.referrer)=concat("http://dongxicheng.org",refres.refe)
group by refres.reso,refres.refe;

这是适合我的需要!

Answer 1:

据我知道这样corelated子查询中蜂房不被支持。 我证实从下面的帖子我的想法:

蜂巢列作为一个子查询选择

不过我认为,你可以修改您的查询,实现你正在试图获得:

insert into table webmap
select a.res reference, b.res resource, 
count(weblog.ip) weight
from toprefres a 
join toprefres b
join weblog ON weblog.resource=a.res 
and weblog.referer=b.res;

还指出,在其中没有ON子句有可能导致交叉连接创建一个笛卡尔乘积,并采取更多的时间。 如果可能的话,以优化。



文章来源: Does Hive support Select in Select?