解决方案过滤少数导致倾斜的key-关于Spark数据倾斜的优化

时间:2021-04-26 10:15:54
【文件属性】:
文件名称:解决方案过滤少数导致倾斜的key-关于Spark数据倾斜的优化
文件大小:5.59MB
文件格式:PPT
更新时间:2021-04-26 10:15:54
Spark 数据倾斜 优化 解决方案二:过滤少数导致倾斜的key 方案适用场景:如果发现导致倾斜的key就少数几个,而且对计算本身的影响并不大的话,那么很适合使用这种方案。比如99%的key就对应10条数据,但是只有一个key对应了100万数据,从而导致了数据倾斜。 方案实现思路:如果我们判断那少数几个数据量特别多的key,对作业的执行和计算结果不是特别重要的话,那么干 脆就直接过滤掉那少数几个key。比如,在Spark SQL中可以使用where子句过滤掉这些key或者在Spark Core中对RDD执行filter算子过滤掉这些key。如果需要每次作业执行时,动态判定哪些key的数据量最多然后再进行过滤,那么可以使用 sample算子对RDD进行采样,然后计算出每个key的数量,取数据量最多的key过滤掉即可。 方案实现原理:将导致数据倾斜的key给过滤掉之后,这些key就不会参与计算了,自然不可能产生数据倾斜。 方案优点:实现简单,而且效果也很好,可以完全规避掉数据倾斜。 方案缺点:适用场景不多,大多数情况下,导致倾斜的key还是很多的,并不是只有少数几个。 方案实践经验:在项目中我们也采用过这种方案解决数据倾斜。有一次发现某一天Spark作业在运行的时候突然 OOM了,追查之后发现,是Hive表中的某一个key在那天数据异常,导致数据量暴增。因此就采取每次执行前先进行采样,计算出样本中数据量最大的几个 key之后,直接在程序中将那些key给过滤掉。 *

网友评论