如何使用python处理内存中的大数据



我有一个比内存还大的数据集。一般来说,我必须循环通过350个点,每个点都是一个大约80 Gb大小的数据集。通常我一次只处理一个文件就可以解决这个问题,但现在我要执行的计算需要我一次加载所有数据。我正在寻求如何解决这个问题的建议。已经读了一些关于dask和pyspark的文章,但不确定我需要什么。由于我正在对数据进行PCA(主成分分析(,因此无法将我的数据划分为块,因此我需要对整个数据进行计算,数据是速度场,而不是表。也许更改内存中数组的浮点格式可以起作用,或者使用任何其他技巧来压缩内存中的数组。每个点上的所有文件都是pickle格式的,是3200个文件,总共提供了大约32Tb的数据。

我有64 Gb的RAM和一个32核的CPU。

我们非常感谢对这一问题的任何指导。

通常情况下,您可以为此使用数据生成器。这允许您在不将完整数据集加载到内存中的情况下使用数据集。

在实践中,您可以使用TensorFlow。用于数据生成器:

tf.data.Dataset.from_generator

(https://www.tensorflow.org/api_docs/python/tf/data/Dataset#from_generator)

要应用PCA:tft.pca(https://www.tensorflow.org/tfx/transform/api_docs/python/tft/pca)

最新更新