【问题标题】:How to specify partition numbers when write a dataframe to parquet using PySpark使用 PySpark 将数据帧写入镶木地板时如何指定分区号
【发布时间】:2016-09-03 11:51:33
【问题描述】:

我想将 spark 数据帧写入 parquet,而不是将其指定为 partitionBy,而是指定为 numPartitions 或每个分区的大小。在 PySpark 中是否有一种简单的方法可以做到这一点?

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    如果您只关心分区数,则该方法与任何其他输出格式完全相同 - 您可以使用给定的分区数重新分区 DataFrame,然后使用 DataFrameWriter

    df.repartition(n).write.parquet(some_path)
    

    【讨论】:

    • 谢谢!但似乎repartition 的成本很高。我尝试了coalesce,但这项工作实际上失败了。 coalesce 中的 numPartition 有什么要求吗? coalesce 应该比 repartition 便宜吗?
    • 仅当变化相对较小时。否则它必须移动数据,所以唯一的优点是没有完全洗牌。另一方面,它不太可能提供均匀分布。
    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 2020-06-30
    • 2020-04-30
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    相关资源
    最近更新 更多