gpt4 book ai didi

scala - 在 spark 中使用 partitionBy 和 coalesce

转载 作者:行者123 更新时间:2023-12-02 00:15:20 25 4
gpt4 key购买 nike

我需要根据特定的 Partition 键将数据写入 s3,这可以使用 write.partitionBy 轻松完成。但是,在这种情况下,我只需要在每个路径中写入一个文件。我正在使用以下代码来执行此操作。

    orderFlow.coalesce(1).write.partitionBy("SellerYearMonthWeekKey")
.mode(SaveMode.Overwrite)
.format("com.databricks.spark.csv")
.option("delimiter", ",")
.option("header", "true")
.save(outputS3Path + "/")

能否请您帮助我找到实现此目标的最佳方法?在上述情况下,我遇到了 OutOfMemmory 错误。

最佳答案

如果您想为每个分区输出一个文件,您可以按 partitionBy 中使用的相同列对数据集进行重新分区

   orderFlow.repartition("SellerYearMonthWeekKey")
.write.partitionBy("SellerYearMonthWeekKey")
.mode(SaveMode.Overwrite)
.format("com.databricks.spark.csv")
.option("delimiter", ",")
.option("header", "true")
.save(outputS3Path + "/")

这将花费您一次洗牌但保证每个分区目录一个文件。

关于scala - 在 spark 中使用 partitionBy 和 coalesce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57110347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com