【问题标题】:Difference between repartition(1) and coalesce(1)重新分区(1)和合并(1)之间的区别
【发布时间】:2021-09-12 06:23:35
【问题描述】:

在我们的项目中,我们使用repartition(1)将数据写入表中,我很想知道为什么这里不能使用coalesce(1),因为repartition与coalesce相比是一个昂贵的操作。

我知道repartition将数据平均分布在分区之间,但是当输出文件是单部分文件时,为什么我们不能使用coalesce(1)?

【问题讨论】:

标签: apache-spark apache-spark-sql


【解决方案1】:

coalesce 有一个问题,如果您使用小于当前执行程序数量的数字调用它,则用于处理该步骤的执行程序数量将受到您传递给合并函数的数量的限制。

repartition 函数通过混洗数据避免了这个问题。在您将数据减少到单个分区(或者实际上,少于一半的执行程序)的任何情况下,您几乎应该总是使用 repartition 而不是因为这个原因。重分区造成的shuffle,比起调用coalesce(1)的单线程操作来说,是不小的代价

【讨论】:

    【解决方案2】:

    你没有在逻辑方面陈述其他任何内容。

    【讨论】:

      猜你喜欢
      • 2022-10-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 2019-11-30
      • 1970-01-01
      • 2019-04-27
      相关资源
      最近更新 更多