繁体   English   中英

如何处理格式为 SAS7DBAT 文件的大于 30 GiB 的大型数据集?

[英]How do I work with large, >30 GiB datasets that are formatted as SAS7DBAT files?

我有这 30 个 GiB SAS7BDAT 文件,它们对应于一年的数据。 当我尝试使用 pd.read_sas() 导入文件时,出现与内存相关的错误。 经过研究,我听说使用 Dask,将文件分割成更小的块,或 SQL。 这些答案听起来很广泛,而且由于我是新手,我真的不知道从哪里开始。 如果有人可以与我分享一些细节,将不胜感激。 谢谢。

我不知道用于 dask 的此类数据的分区加载程序。 但是,pandas API显然允许您按块将数据写入 stream,因此您可以将这些块以任何方便的格式写入其他文件,然后以任何方便的格式将这些块写入其他文件,然后处理这些块。 chunksize 的最佳值将取决于您的数据和可用的 memory。

以下应该有效,但我没有任何此类数据可供尝试。

with pd.read_sas(..., chunksize=100000) as file_reader:
    for i, df in enumerate(file_reader):
        df.to_parquet(f"{i}.parq")

然后你可以加载零件(并行)

import dask.dataframe as dd
ddf = dd.read_parquet("*.parq")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM