【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
- 大資料SQL優化之資料傾斜解決案例全集大資料SQL優化
- Spark效能最佳化篇三:資料傾斜調優Spark
- 實戰 | Hive 資料傾斜問題定位排查及解決Hive
- Spark學習——資料傾斜Spark
- 如何解決Hive中經常出現的資料傾斜問題Hive
- Spark SQL三種join和資料傾斜的產生和解決辦法SparkSQL
- 資料傾斜解決辦法
- IoT資料傾斜如何解決
- Spark 資料傾斜及其解決方案Spark
- 編號函式 自定義函式 集合型別 表的優化 資料傾斜函式型別優化
- Cesium傾斜模型單體化模型
- hadoop 透過cachefile來避免資料傾斜Hadoop
- PostgreSQL DBA(193) - 資料傾斜下的HashJoinSQL
- Redis 切片叢集的資料傾斜分析Redis
- 數倉效能最佳化:傾斜最佳化-表示式計算傾斜的hint最佳化
- 【Spark篇】---Spark解決資料傾斜問題Spark
- 傾斜單體化模型技術實現模型
- 如何解決 Redis 資料傾斜、熱點等問題Redis
- 五款傾斜攝影與三維資料處理工具介紹:GISBox、Cesiumlab、OSGBLab、靈易智模、傾斜伴侶
- Redis 資料傾斜與 JD 開源 hotkey 原始碼分析揭秘Redis原始碼
- 一種自平衡解決資料傾斜的分表方法
- Group by 優化優化
- Hive --------- hive 的優化Hive優化
- [Hive]Hive排序優化Hive排序優化
- Oracle資料傾斜導致的問題-無繫結變數Oracle變數
- Oracle資料傾斜導致的問題-有繫結變數Oracle變數
- salesforce零基礎學習(九十九)Salesforce Data Skew(資料傾斜)Salesforce
- join 查詢優化優化
- hive、spark優化HiveSpark優化
- hive的優化Hive優化
- PIoU Loss:傾斜目標檢測專用損失函式,公開超難傾斜目標資料集Retail50K | ECCV 2020 Spotlight函式AI
- Mysql資料庫的join演算法介紹,優美的執行優化MySql資料庫演算法優化
- Spark shuffle調優Spark
- Hive高階優化Hive優化
- 傾斜攝影測量知識基礎
- Oracle面對“資料傾斜列使用繫結變數”場景的解決方案Oracle變數