spark 数据倾斜遇到过吗,如何解决数据倾斜?【重要】

简介: spark 数据倾斜遇到过吗,如何解决数据倾斜?【重要】

1. 数据倾斜的产生:

在 Spark 中,首先要明确产生数据倾斜的原因,数据倾斜产生的原因一般是某一个或者某几个 Partition 的数据特别大时,导致这几个 Partition 计算需要消耗相当长的时间,从而影响整个 job 执行变慢。

在 Spark 中同一个应用程序分成多个 stage,这些 stage 之间是串行执行的,而一个 stage 里面有多个 task 是可以并行执行的(一个分区对应一个 task),如果一个 Partition 的数据特别大,那么这个 task 执行时间会很长,会导致接下来的 stage 无法执行,从而导致整个 job 执行变慢。

2. 数据倾斜解决办法:

(1)可以选用合适的 key 作为分区的 key

(2)或者自定义相关的 partitioner

(3)或者通过加盐或者哈希值来拆分这些 key,从而将这些数据被平均地分散到不同的 partition 中去执行。

如下算子会导致 shuffle 操作,是导致数据倾斜可能发生的关键点所在:

groupByKey;reduceByKey;aggregaByKey;join;cogroup;

盐(Salt)

在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为 “加盐”。

相关文章
|
6月前
|
SQL 分布式计算 HIVE
Spark数据倾斜问题分析和解决
Spark数据倾斜问题分析和解决
89 0
|
分布式计算 Spark
spark full outer join 数据倾斜导致OOM
spark full outer join 数据倾斜导致OOM
95 0
|
SQL 消息中间件 分布式计算
Spark面试题(五)——数据倾斜调优
数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈。
281 0
Spark面试题(五)——数据倾斜调优
|
SQL 人工智能 分布式计算
Spark 数据倾斜及其解决方案
本文从数据倾斜的危害、现象、原因等方面,由浅入深阐述Spark数据倾斜及其解决方案。
Spark 数据倾斜及其解决方案
|
SQL 分布式计算 HIVE
|
SQL 消息中间件 分布式计算
20【在线日志分析】之记录一次Spark Streaming+Spark SQL的数据倾斜
1.现象 三台机器都有产生executor,每台都会产生tasks,但是其中只有一台的task有input数据,其他机器的tasks都没有数据。 2.猜想 2.1是不是数据倾斜? 是 2.2是数据量过大,group by时,导致key分布不均? 比如key1 有98万,key2有2万,那么shuffle时,肯定数据倾斜。
1103 0