时间:2021-07-01 10:21:17 帮助过:9人阅读
hive中leftouterjoin的问题,where过滤条件写的地方不对,得出的结果不一样,请看下面的代码过程,不用多解释。 Hive Hadoop hive desc t1; OKid int name string p_id int Time taken: 0.118 seconds, Fetched: 3 row(s)hive desc t2;OKid int name string T
hive中left outer join 的问题,where过滤条件写的地方不对,得出的结果不一样,请看下面的代码过程,不用多解释。 Hive Hadoop
- hive> desc t1;
- OK
- id int
- name string
- p_id int
- Time taken: 0.118 seconds, Fetched: 3 row(s)
- hive> desc t2;
- OK
- id int
- name string
- Time taken: 0.051 seconds, Fetched: 2 row(s)
- hive> select * from t1;
- OK
- 1 aaa 2
- 2 bbb 2
- 3 ccc 3
- 4 ddd 4
- 5 fff 3
- 6 ooo 23
- Time taken: 0.418 seconds, Fetched: 6 row(s)
- hive> select * from t2;
- OK
- 4 jjj
- 4 jjj
- 4 jjj
- 2 abc
- 3 hhh
- 4 jjj
- 3 ii
- 2 fuck
- 7 shit
- Time taken: 0.068 seconds, Fetched: 9 row(s)
- hive> select * from t1 left outer join t2 on (t1.p_id=t2.id) where t2.name='abc';
- OK
- 1 aaa 2 2 abc
- 2 bbb 2 2 abc
- Time taken: 21.53 seconds, Fetched: 2 row(s)
- hive> select * from t1 left outer join t2 on (t1.p_id=t2.id and t2.name='abc');
- OK
- 1 aaa 2 2 abc
- 2 bbb 2 2 abc
- 3 ccc 3 NULL NULL
- 4 ddd 4 NULL NULL
- 5 fff 3 NULL NULL
- 6 ooo 23 NULL NULL
- Time taken: 17.676 seconds, Fetched: 6 row(s)
- hive left outer join 要过滤右表的数据应该是第二种写法,第一种是mysql的写法,但是在hive中会存在问题。