-1

我有大约 250 个文件夹。一天中的每个文件夹。每个文件夹包含 24 个 parquet 文件。我需要全部阅读它们,在它们上运行一个函数,并在函数更改后编写它们。

写作时,我这样做:

df
  .repartition('date)
  .write
  .partitionBy("date")
  .mode(SaveMode.Overwrite)
  .parquet(outputPath)

但这会将原始拆分“丢失”为每个日期 24 个部分,并且每个日期写入一个文件。有没有办法把每天分成 n 个部分?

4

1 回答 1

-1

执行时可以指定目标分区的数量repartition- scaladoc

df
  .repartition(numPartitions = 24, 'date)
  .write
  .partitionBy("date")
  .mode(SaveMode.Overwrite)
  .parquet(outputPath)

编辑

我刚刚意识到numPartitions结果分区的总数。因此,您可以尝试将天数乘以每个文件所需的拆分次数,例如 numPartitions = 24 * 250- 但是,不能保证所有天都会有 24 次拆分,尤其是当每天的数据量大不相同时。

于 2018-11-20T13:53:51.053 回答