Hive中的代码是否可能,有些变化?:
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;
我在hive-0.10.0-cdh4.5.0中运行它并得到错误: FAILED:ParseException第3:1行无法识别'select''count''附近的输入(''在表达式规范中
如果支持在Hive中选择select,该怎么办?
我终于找到了答案:
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;
这完全符合我的需要!
答案 0 :(得分:0)
据我所知,Hive不支持此类核心子查询。我从以下帖子中确认了我的想法:
Hive column as a subquery select
但我认为,您可以修改您的查询以实现您想要获得的内容:
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子句中没有可能导致交叉连接创建笛卡尔积并花费更多时间。如果可能的话,尝试优化它。