只要对数据的访问、处理使用分治的思想,就会面临潜在的数据倾斜问题,严重的数据倾斜会导致任务执行缓慢甚至失败。
- 简单的数据查询来带的数据倾斜
比如说现在需要统计一张传统数据库表中的某个字段词频,按照每天一次统计,由于我们的应用内存受限,无法容纳一天全部的数据,所以我们采用分时段统计的方式,这是理所当然的,这时候数据倾斜问题就可能找到我们。
造成问题的原因往往是对于数据的分布不够了解,比如这张表的数据是由其它系统上传,那么其它系统大概率会选择凌晨上传,这会导致某几个小时内数据的占比格外的大,我们统计到这部分就可能出现内存溢出等风险。
解决方式往往是采用业务无关的方法给数据分类,比如对数据id进行取模,尽量使我们每一次处理的数据数量是大致相同的即可。
- 大数据生态下的数据倾斜
常用的大数据分析框架主要由MapReduce、spark、hive等,思路都差不多,最终都落到MapReduce上考虑就行;
未完成