开发者社区> 问答> 正文

控制目标parquet文件的数量

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

在写作时,我这样做:

df
.repartition('date)
.write
.partitionBy("date")
.mode(SaveMode.Overwrite)
.parquet(outputPath)
但是这会将原始拆分“丢失”到每个日期的24个部分,并且每个日期写入一个文件。有没有选择将每天分成n个部分?

展开
收起
社区小助手 2019-01-02 15:20:01 2111 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    你可以做一个时指定目标分区的数量repartition- scaladoc

    df
    .repartition(numPartitions = 24, 'date)
    .write
    .partitionBy("date")
    .mode(SaveMode.Overwrite)
    .parquet(outputPath)
    编辑
    我刚刚意识到numPartitions总共产生的分区数。因此,您可以尝试将它传递给每个文件所需的分割数量的天数,例如 numPartitions = 24 * 250 - 但是,不能保证所有天都会有24个分割,特别是如果每​​天的数据量大不相同。

    2019-07-17 23:24:25
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spark + Parquet in Depth 立即下载
File Format Benchmark - Avro, JSON, ORC, & Parquet 立即下载
低代码开发师(初级)实战教程 立即下载