如何在 S3 上存储大型压缩 CSV 以与 Dask 一起使用



我有一个大型数据集(~1 TB的数据(,分布在几个csv文件中,我想将其存储在S3上(压缩(。我在将压缩文件读取到 dask 中时遇到了问题,因为它们太大了,所以我最初的解决方案是将每个 csv 拆分为可管理的大小。然后按以下方式读取这些文件:

ddf = dd.read_csv('s3://bucket-name/*.xz', encoding = "ISO-8859-1", 
compression='xz', blocksize=None, parse_dates=[6])

在我摄取完整的数据集之前 - 这是正确的方法,还是有更好的方法来完成我需要的东西?

这对我来说似乎是明智的。

这里出现的唯一挑战是由于压缩。 如果压缩格式不支持随机访问,则 Dask 无法将大文件分解为多个较小的部分。 对于支持随机访问但未配置为该特定文件的格式(如 xz(,也是如此。

在这种情况下,手动将文件分解为许多小文件并使用blocksize=None就像上面所做的那样是一个很好的解决方案。

最新更新