【问题标题】:spark repartition issue for filesize文件大小的火花重新分区问题
【发布时间】:2022-12-17 21:32:16
【问题描述】:

需要合并小的镶木地板文件。我在 hdfs 中有多个小镶木地板文件。 我喜欢将每个镶木地板文件合并到近 128 MB 2. 所以我使用 spark.read() 读取所有文件 并在上面做了 repartition() 并写入 hdfs 位置

我的问题是 我有大约 7.9 gb 的数据,当我重新分区并保存到 hdfs 时,它接近 22。

我与 repartition , range , coalesce 联系在一起但没有得到解决方案

【问题讨论】:

  • 重新分区后,所有文件的总大小为 22gb,而之前(因此没有分区)是较小的数字,对吗?如果是,差异有多大?
  • 请展示 coe,那总是更好。
  • val df = spark.read.parquet("path/to/parquet/*.*"); df.repartition(10).write.mode(SaveMode.Overwrite).option("compression","snappy").parquet("/path/to/file")

标签: scala apache-spark hdfs apache-spark-sql-repartition


【解决方案1】:

我认为这可能与您的重新分区操作有关。您正在使用 .repartition(10),因此 Spark 将使用 RoundRobin 对您的数据进行重新分区,因此排序可能会发生变化。数据顺序在压缩过程中很重要,您可以在question中阅读更多内容

您可以尝试按表达式添加排序或分区数据,而不是仅按分区数来优化文件大小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2018-07-06
    • 2016-04-23
    • 2020-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多