记忆角落

  • {{ item.name }}
  • 首页
  • 关于
  • 归档
  • 邻居
  • 捐赠

Hive踩过的坑-HIVE处理非等值连接(JOIN XX ON XX LIKE XX)

  • 郭良俊只狗
  • 2018-11-18
  • 3
SELECT * FROM TABLE1 A LEFT OUTER JOIN TABLE2 B ON A.XX LIKE CONCAT('%' , B.YY , '%')
这个语句在oralce 或者mysql 都可以执行
可是用以上代码放到HIVE中执行,发现报错,原因是HIVE不支持非等值连接。
所以还是用最老套的办法
SELECT * FROM TABLE1 A ,TABLE2 B WHERE A.XX LIKE CONCAT('%' , B.YY , '%')
达到相同的办法吧,虽然这个真的把性能和速度降低了N倍,但是hive真的只能这样吧(自己想到的办法)
然后也可以使用 LOCATE(substr , str) 函数,如果包含,则返回 >0 的数,否则返回0
select b.rule_id,a.imei from table1 a
left outer join table1 b ON(TRUE)/1=1
WHERE LOCATE(upper(b.iot_rule),upper(a.ua))>0
limit 20;
至于为什么HIVE不支持非等值连接,这可能是因为Hive很难把不等条件翻译成mapreduce job

© 2012 - 2023 记忆角落 网站统计
Theme by Wing
粤ICP备14056850号-1 又拍云CDN赞助