【问题标题】:what is the df.coalesce(1) means?df.coalesce(1) 是什么意思?
【发布时间】:2020-03-08 18:57:43
【问题描述】:

我在 python 中使用了 spark,所以我需要保存包含 spark 结果的 parquet 文件

df
.coalesce(1)
.write
.save(save_path, format='parquet', mode='append'))

这是收集数据并以 parquet 格式代码保存到 HDFS

所以我很好奇,如果我运行 spark 大约 30 个镶木地板文件 火花结果将只保存一个拼花文件或不保存

如果有人知道校长请教我 这段代码对于只保存一个镶木地板文件是否正确。

谢谢

【问题讨论】:

    标签: python-3.x apache-spark hdfs parquet


    【解决方案1】:

    Coalesce 使用现有分区来最大程度地减少混洗的数据量。


    Repartition 创建新分区并进行完全随机播放。 合并导致具有不同数据量的分区(有时分区具有很大不同的大小),重新分区导致大小大致相等的分区。


    就操作的性能而言,coalesce 更有效。如果您可能需要相同大小的分区来进行进一步处理,则重新分区可能是一种选择


    对于您提供的示例 coalesce() 是更好的选择,当您需要设置分区数 = 1 时,coalesce() 确实是最好的选择

    您的代码是正确的,应该只生成一个数据文件作为输出

    【讨论】:

    • 这是一个正确而清晰的信息,就像一个额外的评论是你在使用.coalesce(1)时应该小心,因为所有的数据都会被发送到驱动程序,如果不这样做可能会导致内存错误不合适。
    【解决方案2】:

    Coalesce 是一种在数据框中对数据进行分区的方法。这主要用于减少数据帧中的分区数

    你可以参考这个linklink了解更多关于coalescerepartition的细节

    是的,如果您使用df.coalesce(1),它只会写入一个文件(在您的情况下是一个镶木地板文件)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2016-11-18
      • 2019-11-19
      • 2016-09-20
      • 2019-03-10
      相关资源
      最近更新 更多