用Pyarrow读取分区的Parquet文件会占用过多的内存

时间:2019-02-01 18:41:15

标签: pandas hdfs parquet impala pyarrow

我有一个由分区的Parquet文件组成的大型Impala数据库。 我直接使用HDFS将一个Parquet分区复制到本地磁盘。该分区共有15GB,由许多文件组成,每个文件10MB。我正在尝试通过Pyarrow引擎或Pyarrow直接使用Pandas读取此信息,但是其内存大小使用了60GB以上的RAM,并且在使用所有内存之前不会读取整个数据集。如此大的内存使用量可能是什么原因?

1 个答案:

答案 0 :(得分:1)

磁盘和内存中Parquet文件的大小可能会有所不同。实木复合地板使用有效的编码和压缩技术来存储列。当您将此数据加载到RAM时,数据将解压缩为未压缩形式。因此,对于文件大小为15G的数据集,预计RAM使用量为150G。

如果不确定是否是问题所在,请使用df = pandas.read_parquet加载单个文件,并使用df.memory_usage(deep=True)检查其内存使用情况。这应该可以很好地说明整个数据集的磁盘和RAM之间的缩放比例。