hive sql优化基础
文章目录
- 一、数据倾斜分类
- 二、Join倾斜
- 1.大表Join小表
提示:本文非原创。记录此文的目的:再学习和梳理sql 优化知识点,方便以后遇到类似问题方便查阅以及快速处理。
一、数据倾斜分类
根据使用经验总结,引起数据倾斜的主要原因有如下几类:
-
Join
-
GroupBy
-
Count(Distinct)
-
ROW_NUMBER(TopN)
-
动态分区
其中出现的频率排序为JOIN > GroupBy > Count(Distinct) > ROW_NUMBER > 动态分区。
二、Join倾斜
1.大表Join小表
使用MAPJOIN HINT语法,如下所示。
SELECT /*+ mapjoin(t2,t3)*/t1.ip,t1.is_anon,t1.user_id,t1.user_agent,t1.referer,t2.ssl_ciphers,t3.shop_province_name,t3.shop_city_name
FROM <viewtable> t1
LEFT OUTER JOIN (<other_viewtable>) t2
ON t1.header_eagleeye_traceid = t2.eagleeye_traceid
LEFT OUTER JOIN ( SELECT shop_id,city_name AS shop_city_name,province_name AS shop_province_nameFROM <tenanttable>WHERE ds = MAX_PT('<tenanttable>')AND is_valid = 1) t3
ON t1.shopid = t3.shop_id