You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Dask中Parquet文件的分区逻辑与CSV文件不一致

Dask Parquet 与 CSV 分区逻辑差异及chunksize生效规则说明

核心差异原因

  • CSV 属于无结构行存储纯文本,read_csv的chunksize是硬生效指标:Dask会直接按你设置的字节大小切割原始文本,仅遇到跨行记录时会有极小误差,所以你设置50MB块大小就能生成符合预期的30个分区。
  • Parquet 属于带结构化元数据的列存储二进制文件,read_parquet默认以文件内置的**Row Group(行组)**作为最小分区单元,不会拆分单个Row Group,也不会主动合并多个小Row Group,此时你设置的chunksize仅作参考,最终分区数量完全由源Parquet文件的Row Group划分规则决定,这就是你直接读取Parquet时分区不符合预期的核心原因。
  • 调用repartition(partition_size='50mb')后得到109个分区,是因为此处的partition_size统计的是加载到内存后的未压缩数据大小,而Parquet默认采用高压缩比存储,磁盘上的50MB压缩文件加载到内存后通常会膨胀到200MB500MB不等,按内存大小拆分后自然会得到远多于预期的分区数量。如果要达到和CSV处理时近似的分区数量,可以把`partition_size`调整为200MB300MB即可。

chunksize 对两类文件的生效规则区别

  • 对CSV文件:chunksize是硬限制,Dask会严格按设置的磁盘文件字节大小切分,最终分区大小和设置值误差不超过10%。
  • 对Parquet文件:chunksize是软限制,仅用于过滤匹配大小接近的完整Row Group,不会修改源文件的Row Group结构,最终分区大小可能和设置值相差数倍。

内容的提问来源于stack exchange,提问作者Lucas Leão

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:54:00