我有一个由分区的Parquet文件组成的大型Impala数据库。 我直接使用HDFS将一个Parquet分区复制到本地磁盘。该分区共有15GB,由许多文件组成,每个文件10MB。我正在尝试通过Pyarrow引擎或Pyarrow直接使用Pandas读取此信息,但是其内存大小使用了60GB以上的RAM,并且在使用所有内存之前不会读取整个数据集。如此大的内存使用量可能是什么原因?
答案 0 :(得分:1)
磁盘和内存中Parquet文件的大小可能会有所不同。实木复合地板使用有效的编码和压缩技术来存储列。当您将此数据加载到RAM时,数据将解压缩为未压缩形式。因此,对于文件大小为15G的数据集,预计RAM使用量为150G。
如果不确定是否是问题所在,请使用df = pandas.read_parquet
加载单个文件,并使用df.memory_usage(deep=True)
检查其内存使用情况。这应该可以很好地说明整个数据集的磁盘和RAM之间的缩放比例。