【问题标题】:Dataframe partitions are changing during the running数据框分区在运行过程中发生变化
【发布时间】:2020-07-02 17:10:47
【问题描述】:

我注意到我的程序中数据帧的分区数量发生了变化。我的意思是,我想使用特定数量的分区运行程序,比如说:256。问题是,当出现union 时,生成的数据帧会汇总联合中涉及的数据帧的分区数。例如,初始数据帧具有256 分区,生成的数据帧将具有512

我不知道在所有执行过程中保持256 分区有多重要。另外,我不知道是否在带有512 分区的df 和另一个带有256 的分区之间执行另一个新的union 是否会影响某些事情,或者我是否应该在执行@987654330 之前应用repartition @?

我希望清楚,如需更多信息,请告诉我

【问题讨论】:

  • 您正在使用哪个 spark 版本? Spark 1.3 版本更正了 UNION 的这种行为。
  • 我使用的是 Spark 2.2.0
  • 您想给出具体数字的任何具体原因?这可能适用于一小部分数据,如果您的数据非常庞大,您可能会遇到堆空间异常,并且您正在限制并行线程

标签: scala apache-spark apache-spark-sql


【解决方案1】:

我不会担心分区数量的增加,除非它会导致性能问题。如果您想在联合后重新增加分区数,您应该使用 dataframe.coalesce(256) 而不是 dataframe.repartition(256) 因为如果使用完整的 shuffle,则使用部分 shuffle 会更有效。我的建议是在更改分区和不更改分区的情况下测试性能,看看哪个性能最好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    相关资源
    最近更新 更多