我有一个(一组)压缩后的实木复合地板文件,其中包含约210列,其中我正在将约100列加载到熊猫数据框中。当文件大小约为1 MB(约50行)时,它可以正常工作并且非常快。 python3进程消耗<500 MB的RAM。但是,如果文件> 1.5 MB(超过70行),它将开始消耗9-10 GB的RAM,而不会加载数据帧。如果我仅指定2-3列,则可以从“大”文件中加载它们(仍然消耗那种RAM),但是超出此范围的任何事情似乎都是不可能的。所有列都是文本。
我目前正在使用pandas.read_parquet,但我也尝试了pyarrow.read_table,但结果相同。
有什么想法吗?我只是不明白为什么加载如此大量的数据会像这样炸毁RAM并使其变得不可用。我的目标是将镶木地板中的数据加载到数据库中,因此,如果有更好的方法来做,那也将是一件好事。
代码在下面;这只是pandas.read_parquet的简单用法。
import pandas as pd
df = pd.read_parquet(bytesIO_from_file, columns=[...])
答案 0 :(得分:2)
pyarrow 0.14中存在一个已解决的内存使用问题:https://issues.apache.org/jira/browse/ARROW-6060
即将发布的0.15版本将具有此修复程序,以及Parquet阅读中的许多其他优化。如果您想立即尝试,请参阅the docs以安装开发版本。