事務執行過長如何優化
來源:魅力女性吧 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,然後再彙總。