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

Polars是否支持类似numpy.mmap的内存映射式DataFrame写入?

Polars 是否支持内存映射式的增量写入Parquet?
  • 先明确说:Polars不直接支持像numpy.mmap那样通过指定offset和mode='r+'的内存映射方式来增量写入单个Parquet文件。毕竟Parquet是列式存储格式,文件结构有严格的元数据规范,增量写入需要维护复杂的元数据,没法简单靠内存映射偏移量实现。

  • 但好在Polars有更适配大型数据集的增量写入方案,完全能满足你分批处理、低内存占用的需求:

    1. 分批读取+追加写入:用pl.scan_parquet()懒加载单个Parquet文件,处理完后通过write_parquet()的append=True参数追加到目标文件。这种方式不用把整个数据集塞进内存,每批处理完就写入磁盘,内存占用能控制住。
      示例代码:
      import polars as pl
      
      # 遍历所有待处理的Parquet文件
      for file_path in ["file1.parquet", "file2.parquet", ...]:
          # 懒加载并处理数据(替换成你的实际处理逻辑)
          processed_df = pl.scan_parquet(file_path).filter(pl.col("value") > 100).with_columns(pl.col("date").cast(pl.Date)).collect()
          # 追加写入目标文件,第一次写入时可去掉append=True
          processed_df.write_parquet("output.parquet", append=True)
      
    2. 流式处理写入:如果是从数据源流式读取,Polars的scan_*系列API配合追加写入模式,能实现近乎实时的流式处理,全程内存占用极低。
  • 额外提一句:Parquet格式本身就不适合像普通二进制文件那样直接内存映射增量写入,因为每次追加都要更新文件的元数据(比如统计信息、行组信息等)。Polars的追加写入已经帮你封装了这些复杂操作,是这类场景下的最优做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:52:08