hive中的mapjoin非等值链接
一头程序猿 2014-04-22 10:51:05 我想问下,我现在有两张表,一张大,一张非常小,所以打算用mapjoin,而且大表中的a字段与小表的b字段是包含和被包含的关系,所以大表和小表是不等值的链接,所以用mapjoin比较方便,但是我在查询数据的时候,却查不出想要的数据。。
举例:a字段的数据为:我,我吃了,我睡了。。
b字段的数据为:吃
hiveQL:select /*+ mapjoin(test1)*/ test1.b,test2.a from test1 join test2 where test1.a like '%'+test2.b+'%';
上面这种得不出我想要的结果,所以我又试了其它几中函数:
where find_in_set(test1.b,test2.a)>0
where locate(test2.a,test1.b,0)>0
where instr(test2.a,test1.b)>0
上面这几种方式都查不出我要的结果(a里面的“我吃了”),按照逻辑来说,这些方式都应该是可以的。
所以大家知道为什么吗?
有什么建议吗?