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

如何在Python中从URL读取Parquet文件且避免内存过载?

解决方案:远程Parquet文件分批读取(避免内存过载)

针对纽约出租车数据集这类大体积远程Parquet文件的内存过载问题,以下是几种可行的分批读取方案:

方法1:fsspec + PyArrow 按需迭代批次

利用fsspec处理远程HTTP文件访问,让PyArrow可以直接操作远程Parquet文件并逐批读取:

import pyarrow.parquet as pq
import fsspec

# 初始化HTTP文件系统
fs = fsspec.filesystem("http")
# 打开远程Parquet文件流
with fs.open("https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2019-01.parquet", "rb") as f:
    pq_file = pq.ParquetFile(f)
    # 按指定批次大小迭代读取,可根据内存调整batch_size
    for batch in pq_file.iter_batches(batch_size=10000):
        # 将批次转为DataFrame(按需处理)
        df_batch = batch.to_pandas()
        # 这里添加你的批次处理逻辑,比如数据清洗、分析等
        # process_batch(df_batch)

方法2:Pandas + fsspec 分批读取

如果习惯使用Pandas,可结合fsspec和read_parquet的chunksize参数实现流式读取:

import pandas as pd
import fsspec

parquet_url = "https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2019-01.parquet"
# 通过fsspec打开远程文件流
with fsspec.open(parquet_url, "rb") as f:
    # 按每批10000行读取,chunksize可灵活调整
    for chunk in pd.read_parquet(f, chunksize=10000):
        # 处理当前批次数据
        # process_chunk(chunk)

关键注意事项

  • 批次大小(batch_size/chunksize)需根据本地内存情况调整:过大仍会导致内存压力,过小则会增加IO请求次数。
  • 确保安装必要依赖:执行pip install pyarrow fsspec pandas完成环境配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:39