Skip to content

数据倾斜方案1,2

liaotian1005 edited this page Dec 5, 2018 · 1 revision

第一个方案 : 聚合元数据
第二个方案 : 过滤导致倾斜的key
最有用的.

1.聚合元数据(改变输入来源)
聚合操作 groupbykey reducerbykey 拿到key对应的value,
现在这些操作join gourp reducer key, 都在spark作业执行的.
数据通常在hdfs(hive表),hive表中的数据.有了spark,hive比较适合做凌晨跑的etl,去形成完成的数据仓库(一堆表),
spark作业源表,也是通过hive生成的
某些key 80w 某些key 1w ,
现在直接在hive生成的etl中,对数据进行聚合,比如按key来分组,将key对应的所有value,全部用一种特殊的格式,拼接到一个字符串去,
“key=sessionid,value: action1_seq=1|user_id=1|search=huguo ; action2_seq=2|user_id=1 |search=rou",
对key进行gourp,在spark中拿到key=sessionid,values;hive etl中,直接对key进行聚合,也意味着每个key,只对应一条数据
在spark中不需要gourpbykey+map操作.直接对每个key,value直接map操作,这样就没有shuffle,不会shuffle,
或者对value进行某种操作聚合

2.过滤key
没有办法每个key,就聚合一条
那么每个key对应数据10万条,但key包含很多粒度,现在放粗粒度,

其他方案
双重gourp数据,sample抽样.

Clone this wiki locally