【Hive】資料傾斜優化 shuffle, join, group by
總結一下資料傾斜的優化。
首先從導致資料傾斜的原因方面分析入手,主要是group by和join的相關操作,這兩個操作都會把相同的key拉到同一個reduce,如果其中某些key分佈不均數量過大,這就會導致資料傾斜了。
group by導致的資料傾斜優化:
select --最後彙總
pkg
,sum(part_cnt) as installed_cnt
from
( --先區域性關聯
select
substr(pkg_new, 1, length(pkg_new) - 3) as pkg
,count(userid) as part_cnt
from
( --利用rand函式加字尾,雜湊化分發到不同的reduce中
select
concat(pkg, '_', floor(10 + rand() * 89)) as pkg_new
,userid
from table1
where day = '${day}'
and last = new
) a
group by
pkg_new
,userid
) b
group by pkg
join連線導致的資料傾斜優化:
select
t1.pkg
,cnt1
,cnt2
from
(
select pkg, cnt1, cnt2
--用rand函式雜湊,分發到不同的reduce中
,cast(floor(rand()*10) as string) as rand_num
from table1
) t1
join
--維表膨脹10倍,這樣可以和前表雜湊後關聯得上
(
select pkg, pkg_cn, rand_num
from table2
lateral view explode(split('0,1,2,3,4,5,6,7,8,9',',')) num as rand_num
) t2
on t1.rand_num = t2.rand_num and t1.package = t2.package
謝謝大家的閱讀,也歡迎朋友們提出更好的優化方案~
相關文章
- hive優化-資料傾斜優化Hive優化
- Hive資料傾斜Hive
- Hive千億級資料傾斜解決方案Hive
- 大資料SQL優化之資料傾斜解決案例全集大資料SQL優化
- Spark效能最佳化篇三:資料傾斜調優Spark
- 實戰 | Hive 資料傾斜問題定位排查及解決Hive
- HybridDBPostgreSQL”Sort、Group、distinct聚合、JOIN”不懼怕資料傾斜的黑科技和原理-多階段聚合SQL
- Spark學習——資料傾斜Spark
- 如何解決Hive中經常出現的資料傾斜問題Hive
- Spark SQL三種join和資料傾斜的產生和解決辦法SparkSQL
- 資料傾斜解決辦法
- IoT資料傾斜如何解決
- Spark 資料傾斜及其解決方案Spark
- Cesium傾斜模型單體化模型
- 編號函式 自定義函式 集合型別 表的優化 資料傾斜函式型別優化
- 大資料常見問題之資料傾斜大資料
- Redis 切片叢集的資料傾斜分析Redis
- hadoop 透過cachefile來避免資料傾斜Hadoop
- PostgreSQL DBA(193) - 資料傾斜下的HashJoinSQL
- 【Spark篇】---Spark解決資料傾斜問題Spark
- 傾斜單體化模型技術實現模型
- 如何解決 Redis 資料傾斜、熱點等問題Redis
- Oracle中利用函式索引處理資料傾斜案例Oracle函式索引
- 淺析 Hadoop 中的資料傾斜(R0.1)Hadoop
- 巧用函式索引解決資料傾斜列查詢函式索引
- Spark開發-Shuffle優化Spark優化
- [Hive]Hive排序優化Hive排序優化
- Hive --------- hive 的優化Hive優化
- 一種自平衡解決資料傾斜的分表方法
- Group by 優化優化
- Hive優化Hive優化
- Hive篇---Hive使用優化Hive優化
- Oracle資料傾斜導致的問題-有繫結變數Oracle變數
- Oracle資料傾斜導致的問題-無繫結變數Oracle變數
- Redis 資料傾斜與 JD 開源 hotkey 原始碼分析揭秘Redis原始碼
- bitmap join index ---資料倉儲優化方法之一Index優化
- salesforce零基礎學習(九十九)Salesforce Data Skew(資料傾斜)Salesforce
- css具有傾斜效果的橫條CSS