如何使用pyarrow从文件对象读取csv.gz文件



我正试图使用pyarrow从S3读取一堆gzip压缩的csv文件。pyarrow.csv.read_csv的文档页面显示

如果是字符串或路径,并且它以可识别的压缩文件扩展名结尾(例如".gz"或".bz2">

不幸的是,我无法提供字符串值作为输入路径,因此CSV读取器不进行压缩。

import s3fs
import pyarrow.csv as pv
s3 = s3fs.core.S3FileSystem(anon=False)
csv_path = 's3://bucket_name/path/to/file.csv.gz'
with s3.open(csv_path) as s3fp:
table = pv.read_csv(s3fp)

我试图更深入地研究pyarrow内部,但我无法找到一种方法来传递压缩类型的额外参数。

找到了一个解决方法。在从文件处理程序读取csv之前,可以在两者之间添加gzip解压缩:

import gzip
import s3fs
import pyarrow.csv as pv
s3 = s3fs.core.S3FileSystem(anon=False)
csv_path = 's3://bucket_name/path/to/file.csv.gz'
with s3.open(csv_path) as s3fp:
with gzip.open(s3fp) as fp:
table = pv.read_csv(fp)

最新更新