前言
为什么把源数据预处理和过滤掉倾斜的key两种处理倾斜的方式写到一起?
因为这两种方式在实际的项目中场景较少而且单一,对于数据源预处理,比如原本要在spark中进行聚合或join的操作,提前到hive中去做,这种方式虽然解决了spark中数据倾斜的问题,但是hive中依然也会存在;而过滤倾斜的key的场景就更加少了。文章来源:https://www.toymoban.com/news/detail-485610.html
不过虽然少见,也需要有这样的解决问题思维。文章来源地址https://www.toymoban.com/news/detail-485610.html
使用Hive ETL预处理数据
-
适用场景
导致数据倾斜的是Hive表。如果该Hive表中的数据本身很不均匀(比如某个key对应了100万数据,其他key才对应了10条数据),而且业务场景需要频繁使用Spark对Hive表执行某个分析操作,那么比较适合使用这种技术方案。 -
实现思路
此时可以评估一下,是否可以通过Hive来进行数据预处理(即通过Hive ETL预先对数据按照key进行聚合,或者是预先和其他表进行join),然后在Spark作业中针对的数据源就不是原来的Hive表了,而是预处理后的Hive表。此时由于数据已经预先进行过聚合或join操作了,那么在Spark作业中也就不需要使用原先的shuffle类算子执行这类操作了。 -
实现原理
这种方案从根源上解决了数据倾斜,因为彻底避免了在Sp
到了这里,关于Spark数据倾斜解决方案一:源数据预处理和过滤倾斜key的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!