hive数据倾斜问题
2017-12-13 14:43
162 查看
一、hive数据倾斜
1、MR由于某个key值分布过多,导致某个reduce运行速度严重影响了整个job的运行
2、思考问题原因
-》比如:分区阶段
-》解决的办法1:自定义分区规则,partitioner
-》解决的办法2:针对于key加入随机数
00 1
reduce1
01 2
reduce2
02 3
reduce3
03 3
reduce1
04 3
reduce2
3、hive join
-》 group by、distinct
-》map join reduce join SMB join(sort merge bucket join)或者:桶join
A表:1000万数据 分3个桶
0000-0300
1桶
0301-0600
2桶
0601-1000
3桶
B表:1000万数据 分3个桶
0000-0300
1桶
0301-0600
2桶
0601-1000
3桶
注意:桶join,只有桶表才可以,在建表的时候先分桶
场景:适合数据抽样统计
类似分区的实现,分区与分区之间进行join
A表:1000万数据 分3个桶
0000-0300
1桶 7
0301-0600
2桶
0601-1000
3桶
B表:1000万数据 分3个桶
0000-0300
1桶 7
0301-0600
2桶
0601-0900
3桶
0901-1000
4桶
0901-1000
5桶
0901-1000
6桶
两表之间的桶的个数一定要是相同的,或者B表是A表的桶的个数的倍数
相关链接:https://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842860.html
1、MR由于某个key值分布过多,导致某个reduce运行速度严重影响了整个job的运行
2、思考问题原因
-》比如:分区阶段
-》解决的办法1:自定义分区规则,partitioner
-》解决的办法2:针对于key加入随机数
00 1
reduce1
01 2
reduce2
02 3
reduce3
03 3
reduce1
04 3
reduce2
3、hive join
-》 group by、distinct
-》map join reduce join SMB join(sort merge bucket join)或者:桶join
A表:1000万数据 分3个桶
0000-0300
1桶
0301-0600
2桶
0601-1000
3桶
B表:1000万数据 分3个桶
0000-0300
1桶
0301-0600
2桶
0601-1000
3桶
注意:桶join,只有桶表才可以,在建表的时候先分桶
场景:适合数据抽样统计
类似分区的实现,分区与分区之间进行join
A表:1000万数据 分3个桶
0000-0300
1桶 7
0301-0600
2桶
0601-1000
3桶
B表:1000万数据 分3个桶
0000-0300
1桶 7
0301-0600
2桶
0601-0900
3桶
0901-1000
4桶
0901-1000
5桶
0901-1000
6桶
两表之间的桶的个数一定要是相同的,或者B表是A表的桶的个数的倍数
相关链接:https://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842860.html