如何使用Spark写入128 MB实木复合地板文件

时间:2018-09-20 07:05:04

标签: apache-spark block parquet partition

读取CSV文件然后写入镶木地板,是否可以保存128 MB镶木地板块?

我当前的代码是:

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似乎没有任何作用。在每次运行时,它都会创建一个实木复合地板文件。据我了解,我应该使用.repartition和.coalesce来定义已创建文件的数量,但这假设我知道我正在写入的数据的大小...

有什么好的做法?

1 个答案:

答案 0 :(得分:0)

如果您要针对特定​​的大小定位以获得更好的并发性和/或数据局部性,那么parquet.block.size确实是正确的设置。即使不限制文件大小,也可以限制Parquet文件中内部的行组大小。这些块中的每一个都可以彼此独立处理,如果存储在HDFS上,则还可以利用数据局部性。

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