数据仓库笔记(工作之余总结)
优化参数设置
set hive.mapred.mode=nonstrict;
set hive.auto.convert.join=false;
set hive.skewjoin.key=100000;
set mapred.reduce.tasks = 15;
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=10;
解释:
set hive.mapred.mode=nonstrict;
hive提供了一个严格模式:1.分区表,不明确分区不让查询 2.order by 后不加limit不能查询 ;3、限制笛卡尔积查询
set hive.auto.convert.join=false;
防止map join,数据倾斜
是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加快大表关联小表的 Join 速度。
set hive.skewjoin.key=100000;
hive 在运行的时候没有办法判断哪个key 会产生多大的倾斜,所以使用这个参数控制倾斜的阈值,如果超过这个值,新的值会发送给那些还没有达到的reduce, 一般可以设置成你处理的总记录数/reduce个数)的2-4倍都可以接受.
set hive.exec.parallel=true;
参数控制在同一个sql中的不同的job是否可以同时运行
set hive.exec.parallel.thread.number=10;
就是控制对于同一个sql来说同时可以运行的job的最大值,该参数默认为10,此时最大可以同时运行10个job.
常用的命令:
show create table table_name;查看建表语句
desc table_name; 查看表结构
show locks table_name;查看表是否有锁
unlock table table_name;对表解锁
show locks table_name extended; 查看所表SQL明细
show partitions table_name;查看表的分区
ALTER TABLE table_name DROP IF EXISTS PARTITION(dt='2019-07-03'); 删除分区