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

cPanel终端读取Parquet文件触发ArrowMemoryError问题求助

解决cPanel环境下读取Parquet文件的ArrowMemoryError问题

问题概述

在cPanel终端运行Python脚本读取46.65MB的CA_s.parquet文件时触发pyarrow.lib.ArrowMemoryError: malloc of size 106255424 failed错误,本地电脑可正常执行。核心执行代码:

df = pd.read_parquet(file_path + 'CA_s.parquet')

当前服务器内存状态(free -m输出):

totalusedfreesharedbuff/cacheavailable
Mem:1550754972561120974477588
Swap:1023811212

解决思路与方案

1. 分块读取Parquet文件

避免一次性加载整文件到内存,利用Parquet的分块特性分批读取处理:

import pyarrow.parquet as pq

# 按固定行数分批读取
pq_file = pq.ParquetFile(file_path + 'CA_s.parquet')
for batch in pq_file.iter_batches(batch_size=10000):
    df_chunk = batch.to_pandas()
    # 在此处理当前分块数据

# 或通过数据集接口批量读取
dataset = pq.ParquetDataset(file_path + 'CA_s.parquet')
for table_chunk in dataset.to_batches():
    df_chunk = table_chunk.to_pandas()
    # 在此处理当前分块数据

2. 调整PyArrow内存配置

限制PyArrow的内存使用上限,或禁用线程减少内存开销:

import pyarrow as pa

# 设置内存池上限为1GB
pa.set_memory_pool(pa.MemoryPool().set_limit(1024 * 1024 * 1024))

# 读取时禁用多线程,减少内存占用
df = pd.read_parquet(
    file_path + 'CA_s.parquet',
    pyarrow_options={"use_threads": False}
)

3. 优化数据类型压缩内存

读取时指定更紧凑的数据类型,或读取后优化列类型:

# 读取阶段指定类型(示例:将重复值多的字符串列设为category)
df = pd.read_parquet(
    file_path + 'CA_s.parquet',
    dtype={
        "target_string_col": "category",
        "large_int_col": "int32"
    }
)

# 读取后自动优化数据类型
df = df.convert_dtypes()
# 手动压缩数值列
for col in df.select_dtypes(include=['int64', 'float64']).columns:
    df[col] = pd.to_numeric(df[col], downcast='integer' if df[col].dtype == 'int64' else 'float')

4. 清理服务器缓存释放内存

执行命令清理系统缓存,释放可用内存(需root权限,无权限可联系主机商):

sync && echo 3 > /proc/sys/vm/drop_caches

5. 扩展Swap空间

当前Swap剩余仅212MB,可临时创建Swap文件缓解内存压力:

# 创建1GB Swap文件
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

若需永久生效,将/swapfile none swap sw 0 0添加到/etc/fstab文件。

6. 检查cPanel用户内存配额

cPanel可能对单个用户进程有内存限制,查看当前配额:

ulimit -v

若配额低于需求,联系主机商调整用户内存限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:52:38