select
[all |  distinct ] SEL_EXP...
from
TABLE_NAME
where
CONDITION
having
GROUP_EXP...
order/sort/cluster/distribute  by
COL_LIST
limit
NUM
 
hive limit !=  mysql  limit = sql server top
...where F a>=b / f between a and b / F in (a,b) / F is [not] NULL / F [not] like '%a%' / F [not] rlike REGEX_EXP
...and or not
...group by ... having ...
排序
--order by 全局排序,一个reducer
注意:当开启MR严格模式(set hive.maperd.mode=static;)的时候
排序
--order by 全局排序,一个reducer
--注意:当开启MR严格模式(set hive.maperd.mode=static;)的时候
--order by 必须要设置limit 子句,否则会报错
--对于分区表,必须要对分区字段加限制条件 ,否则会报错
 
--sort  by 部分排序,只对每个reducer中的字段排序
--注意
--sort by 可指定执行的reducer个数(set set mapreduce.job.reduces=<number>) 不加number为查看
--对输出的数据再执行归并排序,即可得到全部的结果。
 
--distruibute by 控制map输出在reducer中的分布:相同key划分到同一个reduce中
 
--cluster by 当(sort by + distribute by )为相同字段时
--注意:只能是升序排序
--案例
select * from emp cluster by deptno;
select * from emp distribute by deptno sort by deptno;
 
--CTE common table expression
with
r1 as (select ... from r2 where ...),
r2 as (select ...),
r3 as (select ...)
select * from r1 union all select * from r3;
等值JOIN
--join时,首先做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表
--如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤
 
--内连接
--外连接
--左外
--右外
--全外
--笛卡尔积
 
分组查询 group by
--select group_cols, agg_func...
--受限于mapred.reduce.tasks数量,也是输出文件的数量
--网络负载过重,可能出现数据倾斜的情况(set hive.groupby.skewindata=true; 参数可以优化数据倾斜问题)
 
--数据导入导出
--导入
insert into TABLE_NAME [partition (key=value)]
select COL_LIST from TABLE_NAME where...
 
load data [local] inpath 'PATH' into table TABLE_NAME [partition (key=value)]
IMPORT TABLE employee_partitioned partition (year=2014,month=11) FROM'/tmp/output'
 
--导出
EXPORT TABLE employee_partitioned partition(year=2014,month11) TO '/tmp/output'
//分桶
set hive.enforce.bucketing=true;//设置hive分桶开关
create external table consume_bucket(
userid BIGINT,
gender STRING,
paytime TIMESTAMP,
paymoney FLOAT
)
clustered by (userid) into 10 buckets;
 
insert into table consume_bucket select userid,gender,paytime,paymoney from consume;
 
分桶抽样:tablesample(bucket bucketNo out of bucketNum)
bucketNo:表示从哪个桶开始抽样
bucketNum:表示抽几个桶,抽样比例bucketNo/bucketNum
 
separatorChar:分隔符 quoteChar:引号符 escapeChar:转意符
 

posted on 2020-08-25 20:05  尧啊尧  阅读(131)  评论(0编辑  收藏  举报