哪种情况使用 coalesce vs repartition 更好
Which situation is it better to use coalesce vs repartition
我有按数据静态分区和按国家/地区动态分区的数据。所以对于每个日期,我可以有多达 180 个国家分区。看起来像这样:
/20180101/cntry=us/ => 100kb
/cntry=ca/ => 500kb
/cntry=uk/ => 1.5mb
对于每个日期,数据都很小(大约 20-100mb)并且在国家/地区分区之间划分。我想知道对于这样的情况,哪种方法会更好?重新分区还是合并?由于数据很小,合并会更好吗?我很困惑什么时候合并或重新分区是更好的选择,具体取决于数据的大小。
由于数据分布不均,我对 Coalesce 的体验非常糟糕。 Coalesce 和 Repartition 的最大区别在于,Repartitions 调用完全洗牌创建平衡的新分区,而 Coalesce 使用已经存在的分区但可以创建不平衡的分区,这对于下游数据的消费者来说可能非常糟糕。
在您的情况下,由于您的数据已经按国家/地区分区,合并不会产生很大影响。而且数据很小,没问题。但是对于开发的角度我个人使用repartition。
您可以在 this 博客 post 中查看更多详细信息。
我有按数据静态分区和按国家/地区动态分区的数据。所以对于每个日期,我可以有多达 180 个国家分区。看起来像这样:
/20180101/cntry=us/ => 100kb
/cntry=ca/ => 500kb
/cntry=uk/ => 1.5mb
对于每个日期,数据都很小(大约 20-100mb)并且在国家/地区分区之间划分。我想知道对于这样的情况,哪种方法会更好?重新分区还是合并?由于数据很小,合并会更好吗?我很困惑什么时候合并或重新分区是更好的选择,具体取决于数据的大小。
由于数据分布不均,我对 Coalesce 的体验非常糟糕。 Coalesce 和 Repartition 的最大区别在于,Repartitions 调用完全洗牌创建平衡的新分区,而 Coalesce 使用已经存在的分区但可以创建不平衡的分区,这对于下游数据的消费者来说可能非常糟糕。
在您的情况下,由于您的数据已经按国家/地区分区,合并不会产生很大影响。而且数据很小,没问题。但是对于开发的角度我个人使用repartition。
您可以在 this 博客 post 中查看更多详细信息。