很多人如果先接触mysql的执行顺序(from ->on ->join ->where ->group by ->having ->select ->distinct ->order by ->limit),可能会对hive中的on和where会产生一些误解,网上也有一些博客写了关于这些内容的,但是自己也还是想自己亲自试验一波,本文主要从inner join,left/right join和full join条件下去区别on和where,以及加上分区的条件,其实搞懂这些对写hql有很大的帮助,要么可以更加的简洁,要么更优,接下来就开始实践。
版本:本文使用CDH 6.3.2 的版本,hive 2.1.1+cdh6.3.2进行测试的
一、试验表和数据 1.1、建表create table `user`( -- 用户表,分区表 department_id int, age int, sex string, name string ) PARTITIONED BY (`date` string) row format delimited fields terminated by ',' STORED AS TEXTFILE; create table department( -- 部门表 id int, name string, count int ) row format delimited fields terminated by ',' STORED AS TEXTFILE;