Saprk数据倾斜七解决方案(一)

1,使用Hive ETL预处理数据

  • 方案适用场景:如果导致数据倾斜的是hive表。如果该表中的数据本身很不均匀(比如某个key由100万条数据,其他key对应10条数据),而且业务场景需要频繁使用Spark对Hive表执行某个分析操作,那么比较合适使用这个方案,
  • 方案实现思路:此时可以评估一下,是否可以通过Hive来进行数据预处理(即通过Hive ETL预先对数据按照key进行聚合,或者预先和其他表join),然后在Spark作业中针对的数据源就不是原来的Hive表了,而是预处理后的Hive表。此时由于数据已经预先进行过聚合或者join操作了,那么在Spark作业中也就不需要使用原先的shuffle类算子执行这诶操作了
  • 方案实现原理:这种方案从根源上解决了数据倾斜,以为彻底避免了在Spark中执行shuffle类算子,那么肯定就不会有数据倾斜的问题。但是这里要提醒大家,这种方式属于治标不治本,因为毕竟数据本身存在分布不均问题,所以Hive ETL在进行group by或 join等shuffle操作时,还是会出现数据倾斜问题,导致Hive ETL速度很慢,我们只是把诗句倾斜的发生提到了hive ETL中,避免Spark程序发生数据倾斜而已


第一次写博客,先就写这些,后续慢慢补上

你可能感兴趣的:(Saprk数据倾斜七解决方案(一))