Python 使用Dask读取单个大压缩csv(内存太大)

Python 使用Dask读取单个大压缩csv(内存太大),python,dask,dask-distributed,Python,Dask,Dask Distributed,我有一个用例,其中我有一个S3存储桶,其中包含几百个gzip文件的列表。当解压并加载到数据帧中时,每个单独的文件都会占用比可用内存更多的内存。我想阅读这些文件并执行一些功能。但是,我似乎不知道该怎么做。我试过Dask的read_表,但因为compression='gzip'似乎需要blocksize=None,所以这似乎不起作用。有什么我遗漏的吗,?还是有更好的方法 下面是我试图调用read_表的方式(注意,名称、类型和空值在别处定义): 我愿意接受任何建议,包括更改整个方法。这不能直接完成,因

我有一个用例,其中我有一个S3存储桶,其中包含几百个gzip文件的列表。当解压并加载到数据帧中时,每个单独的文件都会占用比可用内存更多的内存。我想阅读这些文件并执行一些功能。但是,我似乎不知道该怎么做。我试过Dask的read_表,但因为compression='gzip'似乎需要blocksize=None,所以这似乎不起作用。有什么我遗漏的吗,?还是有更好的方法

下面是我试图调用read_表的方式(注意,名称、类型和空值在别处定义):


我愿意接受任何建议,包括更改整个方法。

这不能直接完成,因为要知道您在gzip文件流中的位置,唯一的方法是从一开始就读取它。这意味着每个数据分区都需要从一开始就读取整个文件,因此Dask决定显式出错

理论上,我可能会扫描一次您的文件,并找出gzip块的起始位置。然而,据我所知,没有代码可以实现这一点

df = dd.read_table(uri,
        compression='gzip',
        blocksize=None,
        names=names,
        dtype=types,
        na_values=nulls,
        encoding='utf-8',
        quoting=csv.QUOTE_NONE,
        error_bad_lines=False)