1.执行Hive语句的三种方式

hive脚本的执行方式
hive控制台执行;
hive -e "SQL"执行;
hive -f SQL文件执行。

2.三种基本模式

实际业务需求使用的Hive SQL 可能千变万化, SQL 逻辑也可能从简单的一行到几百上千行,但是其基本模
式大致可以归为三类。

(1)select 语旬:

比如select order_id,buyer_id, seller_id from orders_table where cate_
name=’手机’ and order_ city=’杭州|’ 。实际中where 条件可能更为复杂而且会有
and/or 等各种组合。

(2)group by 语旬

group by 语旬:比如select cit)刊ount(O) from orders_table group by city 。

(3)join 语旬

join 语旬:即连接两个表,实际中也可能连接多个表。

3.select 语句图解

考虑如下的Hive SQL 语句:

select order _id, buyer_id,cate_name from orders_table where day=' 20170101' and
cate_name=’ iphone7';

其业务背景是希望分析苹果手机iPhone7 的客户情况,那么第一步是必须将iPhone7 订单的明细抓取出来。此Hive SQL 将2017 年1 月1 日当天所有购买的商品是iPhone7 的所有订单明细抓取出来,以此作为分析的基础准备数据。实际抓取出来的记录可能数据量非常大,这里只是示例,读者可以加上limit 语句(如limit 1000 )或者创建一个表保存上述select 语句的结果,命令形式如:

create table your_table_name as 你的select 语句 。

4.group by 语句

数据分析中使用最为频繁的就是group by 语句。

假如业务人员希望分析购买iPhone7 客户在各城市中的分布情况,即哪个城市购买得最多、哪个城市购买得最少。此业务需求可用如下的Hive SQL 来实现:

Select city,count(oder id) as iphone7 count from orders table where
day='20170101' and cate name='iphone7'group by city;

上面的SQL , 会对city 进行分组,统计各城市的i Phone 订单数量,计算出每个城市的订单量,对其排序,自然很容易确定出哪个城市iPhone7 卖得最好、哪个城市卖得最差。

5.join 语句

除了group by 语句,数据分析中还经常需要进行关联分析,也就是需要对两个表进行join 操作,比如业务人员希望分析购买iPhone7 的客户的年龄分布情况,订单表只包含了客户的ID ,客户的年龄保存在另一个买家表中,此时就需要对订单表和客户表进行join 才能得到分析的结果,相关的SQL 如下:

Select tl.order_id,tl.buyer_id,t2.age
From
select order id,buyer id
from orders table
where day=’ 20170101' and cate_name=’ iphone7'
) tl
Join
select buyer_id,age from buyer_table where buyer_status =' 有效·
) t2
On tl.buyer_id=t2.buyer_id ;