在 Hadoop 上增加分区数而不重新分区

Increase the number of partitions without repartition on Hadoop

我有一个目录,其中包含一堆约 500mb 的 deflate 压缩 CSV 文件。我想将它们拆分成更小的 deflate 压缩 CSV 文件。例如,我有 3 个 500mb 文件,我希望它们在写入后变成 15 个 100mb 文件。我目前正在做这样的事情:

spark.read.csv("/input/path")
  .repartition(15)
  .write.option("compression", "deflate").csv("output/path")

但这会导致整个不必要的混乱。有没有办法让它写入 15 个文件而无需经历所有这些麻烦?

简而言之,没有。为此有一个 open feature request。 Spark 使用 spark 内部机制,创建分区是通过 shuffle 完成的。如果您真的想在不改组的情况下拆分此文件,请使用一些不是 spark 的代码来执行此操作。但真的不值得。

题外话但仍然有价值的反馈 -> @OneCricketeer 是正确的,您应该考虑一种性能更高的不同文件格式。(Parquet/Orc)随着数据量的增加,它会极大地提高性能,并且应该是您在谈到文件格式时首先想到的。