數據倉庫筆記(工作之餘總結)
優化參數設置
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'); 刪除分區