我使用Numpy和Pandas来执行大型(130kx30k)和密集(30kx30k)矩阵的矩阵乘法。我现在正试图将结果保存到上游程序使用的镶木地板文件中。我的数据必须采用镶木地板的格式,使用Snappy压缩,并使用模式RowID: Int, Row: Array[Double]
。
我有以下代码可以在测试数据集上正常工作,但在我的实际运行中,我使用超过400G的内存,然后用完并且python被“杀死”。我尝试使用del
删除未使用的数据框,但这没有帮助。
import pandas as pd
import numpy as np
Z = np.matmul(X, Y)
Zp = pd.DataFrame(Z)
Zp.columns = list(map(str, Zp.columns))
Zpp = pd.DataFrame()
Zpp['id'] = Zp.index
Zpp['ratings'] = Zp.values.tolist() #This line is the problem
Zpp.to_parquet("sampleout.parquet", engine='pyarrow')