Parquet 子文件的数量
Number of Parquet sub files
当 来自同一个 csv file
时,Dask
生成了一个包含许多小文件(超过 200 个大小为 3MB 的文件)和 R Sergeant
的镶木地板文件生成了 2 .parquet
个文件,大小分别为 520 MB 和 280 MB)。
我们尝试将 fastparquet.write
与 row_group_offset
关键字一起使用,但没有成功。在Dask
中使用partition_on
添加了一组分区,但每个分区内有许多子.parquet
文件(数百甚至数千个)。
我们如何控制 Python 和 R 中 parquet 文件的大小?
fastparquet,dask 的默认镶木地板编写器,将为每个输入数据块至少制作一个镶木地板文件,如果您使用 partition_on
或 row_group_offset
- 这些也会作用于输入一次一个数据块。默认情况下,您将拥有的块数等于 CSV 文件的数量。
为了减少块的数量,您必须重新调整数据(这可能很昂贵,因此只有在明确需要时才这样做),例如,
df = df.repartition(npartitions=10)
写之前。此外,如有必要,您可以使用 force=True
尝试上述操作。
请注意,在许多情况下,结合设置索引 (set_index
) 和半排序数据来执行此 repartition/rechunk 操作是有意义的,这可以为以后产生更好的性能查询。
当 csv file
时,Dask
生成了一个包含许多小文件(超过 200 个大小为 3MB 的文件)和 R Sergeant
的镶木地板文件生成了 2 .parquet
个文件,大小分别为 520 MB 和 280 MB)。
我们尝试将 fastparquet.write
与 row_group_offset
关键字一起使用,但没有成功。在Dask
中使用partition_on
添加了一组分区,但每个分区内有许多子.parquet
文件(数百甚至数千个)。
我们如何控制 Python 和 R 中 parquet 文件的大小?
fastparquet,dask 的默认镶木地板编写器,将为每个输入数据块至少制作一个镶木地板文件,如果您使用 partition_on
或 row_group_offset
- 这些也会作用于输入一次一个数据块。默认情况下,您将拥有的块数等于 CSV 文件的数量。
为了减少块的数量,您必须重新调整数据(这可能很昂贵,因此只有在明确需要时才这样做),例如,
df = df.repartition(npartitions=10)
写之前。此外,如有必要,您可以使用 force=True
尝试上述操作。
请注意,在许多情况下,结合设置索引 (set_index
) 和半排序数据来执行此 repartition/rechunk 操作是有意义的,这可以为以后产生更好的性能查询。