当前位置: 首页 > 知识库问答 >
问题:

哪种情况下使用合并vs重新分区更好[复制]

詹甫
2023-03-14

我的数据按数据静态分区,按国家动态分区。因此,每次约会,我可以有多达180个国家分区。看起来像这样:

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

对于每个日期,数据很小(大约20-100mb),它被划分在国家分区中。我想知道这样的情况,哪种方法会更好?重新分区还是合并?既然数据很小,合并会更好吗?我很困惑什么时候合并或重新分区会是更好的选择,这取决于数据的大小。

共有1个答案

笪智志
2023-03-14

由于数据分布不均,我对Coalesce的体验非常糟糕。合并和重新分区的最大区别在于,重新分区调用一个完整的洗牌来创建平衡的新分区,而合并使用已经存在的分区,但可以创建不平衡的分区,这对下游的数据消费者来说可能非常糟糕。

在你的例子中,合并不会产生很大的影响,因为你的数据已经按国家划分了。而且数据很小,可以。但是从发展的角度来看,我个人使用重新划分。

更多细节可以在这篇博文中看到。

 类似资料:
  • 我在一个DB中有两个表(和),它们每个都有一个称为的相互列。 我当前使用以下代码仅从中导入一些数据(,): 如果我也想从导入数据(例如,名为和的列),那么我应该向该代码添加什么? 我的目标是拥有这些钥匙: 编辑: 编辑2: 仍然得到一个错误:

  • 我想知道Java中的一些情况(或者更广泛地说:在编程中),在布尔表达式中,使用无条件的()而不是条件版本()是可取的。 我知道它们是如何工作的,但我无法考虑使用单个是否值得。

  • 问题内容: 这可能是一个琐碎的问题,但阅读ARG和ENV的文档对我而言并不清楚。 我正在构建一个PHP-FPM容器,我想提供启用/禁用某些用户需求扩展的功能。 如果可以在Dockerfile中通过添加条件并在build命令上传递标志来做到这一点,那就太好了,但不支持AFAIK。 就我而言,我的个人方法是在容器启动时运行一个小的脚本,如下所示: 这是我的样子: 如果您需要深入了解我的工作方式,那么这

  • 在Spark中,我有两个PairRDD(我们称之为A和B),每个由n个分区组成。我想根据它们的密钥加入这些RDD。 两个RDD都是一致分区的,也就是说,如果键x和y在RDD A中的同一个分区中,它们也在RDD B中的同一个分区中。对于RDD A,我可以保证分区是使用特定的分区器完成的。但是对于RDD B,分区索引可能不同于RDD A(RDD B是一些遗留库的输出,如果不是绝对必要的话,我不愿意碰它

  • 当我摘录文本时,它就像 如何使文本变成一行(删除所有新行) 这是我的小提琴 http://jsfiddle.net/cod7ceho/32/