【问题标题】:Change number of output files using DataFrameWriter in Spark在 Spark 中使用 DataFrameWriter 更改输出文件的数量
【发布时间】:2016-12-07 15:32:39
【问题描述】:

我有一个使用 DataFrameWriter 写入 S3 的数据集。我正在使用 Parquet 并对具有 256 个不同值的列进行 partitionBy 调用。它运行良好,但需要一些时间来写出数据集(并读入其他作业)。在调试中,我注意到编写器只输出 256 个文件,每个后缀一个,尽管我的 repartition 调用指定了 256 个分区。有没有办法增加每个 partitionBy 值的文件输出数?

我的代码如下:

myDS = myDS.repartition(256, functions.col("suffix"));
myDS.write().partitionBy("suffix").parquet(String.format(this.outputPath, "parquet", this.date));

【问题讨论】:

    标签: apache-spark apache-spark-sql spark-dataframe


    【解决方案1】:

    我的代码的问题是在我的repartition 调用中指定了一个列。只需从 repartition 调用中删除该列即可解决问题。

    每个partitionBy值的输出文件数之间的关系与分区数直接相关。假设您有 256 个不同的 partitionBy 值。如果您在编写器之前调用repartition(5),则每个partitionBy 值最多会有5 个输出文件。输出文件的总数不会超过 1280(尽管如果给定的 partitionBy 值没有太多数据,它可能会更少)。

    【讨论】:

      猜你喜欢
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2013-02-25
      • 2022-10-01
      • 1970-01-01
      相关资源
      最近更新 更多