Spark数据倾斜解决方案一:聚合源数据


Spark数据倾斜问题大多数会发生在,程序中使用了产生Shuffle算子的操作,比如:reduceByKey,groupByKey,join,repartition,aggregateByKey等操作。那么,如果我们能够在程序中避免使用这些产生Shuffle算子的话,也就解决了数据倾斜问题。

在实际中,Spark作业所处理的数据的来源大多数是Hive表,而Hive表的数据一般都是用Hive ETL,也就是HQL得到的。假如说在Spark应用中的某个执行聚合算子操作的地方产生了数据倾斜,那么可以直接在做Hive ETL的时候就对数据进行Key的预聚合处理,或者和其他表的join操作。那么在执行Spark的应用中,就不需要使用到原先的Shuffle类算子操作了。所以,这种方案从根源上解决了数据倾斜。但是,由于数据本身就存在分布不均匀的情况,这种处理只是仅仅避免了Spark发生数据倾斜,但是在Hive ETL中执行Shuffle类算子时,依然存在数据倾斜问题。

你可能感兴趣的:(Spark数据倾斜解决方案一:聚合源数据)