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

时间:2017-08-21 14:02:48

标签: dask

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

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

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

1 个答案:

答案 0 :(得分:1)

这对我来说似乎很明智。

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

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