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

手动创建分区Parquet文件后,能否用Polars的scan_parquet读取并获特性?

问题:手动创建Hive风格分区的Parquet文件能否用Polars的scan_parquet(hive_partitioning=True)读取?

我未使用Python Polars库write_parquet()函数的partition_by参数,而是手动创建目录结构并写入Parquet文件,原因如下:

  • 希望完全控制Parquet文件名
  • 希望处理子目录中已有Parquet文件的情况(我会合并数据并去重)

想知道:即使文件是手动写入而非使用partition_by参数生成,能否使用设置hive_partitioning=True的pl.scan_parquet()函数,同时享受懒数据框过滤、并行读取和自动文件发现(使用glob模式)的特性?


回答

当然可以!只要你手动创建的目录结构完全符合Hive分区的规范(比如region=east/year=2024/sales_data.parquet这种分区列名=值的层级格式),Polars的pl.scan_parquet()开启hive_partitioning=True后就能正常识别分区,同时享受你提到的所有特性:

  • 懒数据框过滤:Polars会根据你设置的分区键过滤条件,自动跳过不需要读取的分区目录,实现谓词下推,减少不必要的IO操作
  • 并行读取:Polars会并行处理所有符合条件的Parquet文件,大幅提升大体积数据的读取效率
  • 自动文件发现:只要传入正确的glob模式(比如data/**/*.parquet),它就能自动遍历所有符合Hive分区结构的子目录,找到所有目标文件

需要注意的细节:

  • 目录名格式必须严格遵循分区列名=值的规则,不能有多余符号或格式错误,否则Polars无法识别分区信息
  • 如果手动写入的Parquet文件本身已经包含了分区列的数据,可以设置hive_partitioning='ingest',让Polars自动用目录中的分区值替换文件内的对应列数据,避免数据重复

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:24:53