哪种情况最好使用合并与分区

时间:2019-01-17 06:22:49

标签: scala apache-spark partitioning

我拥有的数据按数据进行静态分区,然后按国家/地区进行动态分区。因此,对于每个日期,我最多可以有180个国家/地区分区。看起来像这样:

/20180101/cntry=us/ => 100kb
         /cntry=ca/ => 500kb
         /cntry=uk/ => 1.5mb

对于每个日期,数据都很小(大约20-100mb),并且在国家/地区分区之间进行划分。我在想这种情况,哪种方法更好?分区还是合并?由于数据很小,合并会更好吗?根据数据的大小,何时合并或重新分区是一个更好的选择,我感到非常困惑。

1 个答案:

答案 0 :(得分:2)

由于数据分布不均,我在Coalesce方面的经历非常糟糕。 Coalesce和Repartition的最大区别在于,Repartitions调用了完整的shuffle来创建平衡的NEW分区,而Coalesce使用已经存在但可以创建不平衡的分区的分区,这对于下游数据的使用者而言可能是非常糟糕的。 / p>

对于您而言,由于您的数据已按国家/地区进行分区,因此合并不会产生很大的影响。而且数据还很小,可以。但是从发展的角度来看,我个人使用分区。

更多详细信息,请参见this博客文章。