【问题标题】:How to write 128 MB parquet file with Spark如何使用 Spark 编写 128 MB 的 parquet 文件
【发布时间】:2019-02-24 10:18:41
【问题描述】:

读取 CSV 文件然后写入 parquet,有没有办法节省 128 MB parquet 块?

我当前的代码是:

filtredDf
    .repartition(96, "mypart")
    .write
    .option("compression", "snappy")
    .option("parquet.block.size", 32 * 1024 * 1024)
    .mode(SaveMode.Append)
    .partitionBy("mypart")
    .parquet(targetDirectory)

parquet.block.size 似乎没有任何效果。在每次运行时,它都会创建一个 parquet 文件。据我了解,我应该使用 .repartition 和 .coalesce 来定义创建文件的数量,但这假设我知道我正在编写的数据的大小......

有什么好的做法?

【问题讨论】:

标签: apache-spark block parquet partition


【解决方案1】:

如果您的目标是特定大小以获得更好的并发性和/或数据局部性,那么parquet.block.size 确实是正确的设置。尽管它不限制文件大小,但它限制了 Parquet 文件内部的行组大小。这些块中的每一个都可以相互独立地处理,如果存储在 HDFS 上,还可以利用数据局部性。

要检查 Parquet 文件的内部结构,您可以使用 parquet-tools meta 命令。

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2017-09-06
    • 2020-01-05
    • 2019-03-26
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2020-02-29
    相关资源
    最近更新 更多