事務執行過長如何優化

來源:魅力女性吧 3.17W
事務執行過長如何優化

事務執行過長優化方法:

1)mapjoin

適用於小表JOIN大表的場景,由於表的JOIN操作是在Map端且在內存進行的,所以其並不需要啟動Reduce任務也就不需要經過shuffle階段,從而能在一定程度上節省資源提高JOIN效率

2)解決數據傾斜

數據傾斜就是key分佈不均勻,導致分發到不同的reduce上,個別reduce任務特別重,導致其他reduce都完成,而這些個別的reduce遲遲不完成的情況

3)避免count(distinct)。可使用group by 代替

4)儘早過濾數據。根據業務特點,添加必要的過濾條件

5)列裁剪。只查詢所需要的列,節約磁盤讀取

6)調整JOIN順序。儘量將數據量少的表/子查詢放在JOIN的左邊

7)優化SQL查詢。能夠掃描一遍源表得到的結果,不要多次掃描。即同一個表,一次性做盡可能多的操作

8)儘可能避免子查詢group by。即儘量先關聯出結果,再進行group by

9)當需要執行多個子查詢union all或者JOIN操作的時候,job間可以並行(llel,將其設為true)

10)拆散多表JOIN。大量表進行JOIN時,hive執行引擎,不一定能很好地工作,此時可考慮將SQL分步驟執行,即少量表分開JOIN,然後再彙總

熱門標籤