gpt4 book ai didi

apache-spark - Spark 写入磁盘,其中 N 个文件少于 N 个分区

转载 作者:行者123 更新时间:2023-12-04 04:57:27 28 4
gpt4 key购买 nike

我们可以将数据写入 100 个文件,每个文件有 10 个分区吗?

我知道我们可以使用重新分区或合并来减少分区数量。但是我看到一些 hadoop 生成的 avro 数据的分区比文件数量多得多。

最佳答案

写出的文件数量由 DataFrame 或 RDD 的并行化控制。因此,如果您的数据分布在 10 个 Spark 分区中,则在不减少分区(例如 coalescerepartition )的情况下,您不能写入少于 10 个文件。

现在,话虽如此,当数据被读回时,它可以根据您配置的拆分大小拆分成更小的块,但取决于格式和/或压缩。

相反,如果您想增加每个 Spark 分区写入的文件数(例如,防止文件太大),Spark 2.2 引入了 maxRecordsPerFile写数据时的选项。有了这个,您可以限制每个分区中每个文件写入的记录数。当然,另一种选择是重新分区。

即使只有 1 个分区,以下内容也会导致写出 2 个文件:

val df = spark.range(100).coalesce(1)
df.write.option("maxRecordsPerFile", 50).save("/tmp/foo")

关于apache-spark - Spark 写入磁盘,其中 N 个文件少于 N 个分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143159/

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