读取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来定义已创建文件的数量,但这假设我知道我正在写入的数据的大小...
有什么好的做法?
答案 0 :(得分:0)
如果您要针对特定的大小定位以获得更好的并发性和/或数据局部性,那么parquet.block.size
确实是正确的设置。即使不限制文件大小,也可以限制Parquet文件中内部的行组大小。这些块中的每一个都可以彼此独立处理,如果存储在HDFS上,则还可以利用数据局部性。
要检查Parquet文件的内部结构,可以使用parquet-tools meta
命令。