Hive踩过的坑-HIVE处理非等值连接(JOIN XX ON XX LIKE XX)
本文最后更新于 2016 天前,其中的信息可能已经有所发展或是发生改变。
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

评论

  1. 伍园目录
    Windows Chrome 70.0.3538.102
    6 年前
    2018-11-21 11:06:55

    射你哦

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇