Pandas parquet 文件 pyarrow.lib.ArrowMemoryError:大小为 106255424 的 malloc 失败

问题描述 投票:0回答:1

我正在尝试在 cPanel 终端中运行 python 脚本。当脚本尝试打开 46.65 MB 大小的镶木地板文件时,我收到错误。这在我的家用电脑上有效。

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

错误信息

Traceback (most recent call last):
  File "/home/.../my_script.py", line 60, in <module>
    df = pd.read_parquet(file_path + 'CA_s.parquet')
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/.../virtualenv/.../python3.11/.../pandas/io/parquet.py", line 667, in read_parquet
    return impl.read(
           ^^^^^^^^^^
  File "/home/.../virtualenv/.../python3.11/.../pandas/io/parquet.py", line 281, in read
    result = pa_table.to_pandas(**to_pandas_kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "pyarrow/array.pxi", line 885, in pyarrow.lib._PandasConvertible.to_pandas
  File "pyarrow/table.pxi", line 5002, in pyarrow.lib.Table._to_pandas
  File "/home/.../virtualenv/.../python3.11/.../pyarrow/pandas_compat.py", line 784, in table_to_dataframe
    result = pa.lib.table_to_blocks(options, table, categories,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "pyarrow/table.pxi", line 3941, in pyarrow.lib.table_to_blocks
  File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowMemoryError: malloc of size 106255424 failed

我在终端中输入

free -m
来获取内存数据:

总计 二手 免费 共享 buff/缓存 可用
记忆: 15507 5497 2561 1209 7447 7588
交换: 1023 811 212

请分享任何想法或答案,谢谢。

python pandas cpanel parquet pyarrow
1个回答
0
投票

我认为这个错误表明内存分配问题,可能是由于执行时可用内存不足造成的。 在这种情况下,试试这个。

如果不需要一次性加载DataFrame,请考虑分块读取Parquet文件。 或者您只需要 DataFrame 中的某些列,使用

columns
中的
read_parquet
参数指定这些列。

这可以显着减少内存使用量。 希望我的回答对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.