创建hive表常用语句:
1. create [external] table if not exists default.xc_log_20170416 (
ip string,
user string ,
...
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE
)
LOCATION '/user/hive/warehouse/xc_log_20170416';
2. create table if not exists default.xc_log_20170416_cp
AS select ip,user from default.xc_log_20170416;
3. create table if not exists default.xc_log_20170417
like default.xc_log_20170416;
修改hive表名称:
alter table dept_like rename to dept_like_rename;
内部表 vs 外部表:
内部表也称为MANAGED_TABLE;
默认存储在/user/hive/warehouse下,也可通过location指定(很少指定)
删除表时,会删除表数据以及元数据
外部表称为EXTERNAL_TABLE;
在创建表时可以自己指定目录位置(LOCATION);
删除表时,只会删除元数据而不会删除表数据
创建分区表以及补充操作:
dfs -mkdir -p /user/hive/warehouse/dept_part/day=20170417 ;
dfs -put /.../.../some.txt /user/hive/warehouse/dept_part/day=20170417;
hive (default)> msck repair table dept_part;
hive中查询介绍:
having :
- where 是针对单条记录进行筛选
- having 是针对分组结果进行筛选
例:求每个部门平均工资大于2000 的部门
select dept,avg(sal) avg_sal from emp group by dept having avg_sal > 2000;
hive中排序:
- Order By
全局排序,一个reduce - Sort By
每个reduce内部进行排序,全局不是排序 - Distribute By
类似MR中partition,进行分区,结合sort by使用,用在sort by之前 - Cluster By
当distribute和sort字段相同时,可以取代使用