栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hive sql 中join引起的数据倾斜之mapjoin优化

hive sql 中join引起的数据倾斜之mapjoin优化

   在dwd层关联维度表时经常会遇到数据倾斜,假如某app商店的曝光数据超百亿,在关联app维度表表时,排在前面的app肯定占了大部分数据,如抖音微信,肯定会遇到数据倾斜。这个时候该怎么解决呢?
   mapjoin无疑是比较好的选择!

步骤1:先建个临时表,筛选3000万以上的数据

CREATE TABLE temp_store_exposure_dm
AS 
SELECt 
t1.app_id
,t2.app_name
,t2.app_category
FROM 
(
	SELECt 
		app_id       
	FROM dwd_store_exposure_dm
	WHERe pt_d='$date'
	group by app_id
	having count(*)>30000000
) t1
inner join 
(
	SELECt 
	app_id
	,app_name
	,app_category
	FROM dim_store_app_ds
	WHERe pt_d='$date'
) t2
ON t1.app_id=t2.app_id

步骤2:事实表关联临时表 , 走mapjoin

SELECt 
t1.app_id
,t2.app_name
,t2.app_category
FROM 
(
	SELECt 
		app_id       
	FROM dwd_store_exposure_dm
	WHERe pt_d='$date'
) t1
LEFT JOIN 	
(
SELECt	
 app_id
,app_name
,app_category
FROM temp_store_exposure_dm
) t2
ON t1.app_id=t2.app_id
UNIOn ALL
SELECt 
t1.app_id
,t2.app_name
,t2.app_category
FROM 
(
	SELECt 
		app_id       
	FROM dwd_store_exposure_dm
	WHERe pt_d='$date'
) t1
LEFT JOIN 	
(
SELECt	
 app_id
,app_name
,app_category
FROM temp_store_exposure_dm
) t2
ON t1.app_id=t2.app_id
WHERe t2.app_id IS NULL
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689819.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号