python - 如何从文件对象中读取带有 pyarrow 的 csv.gz 文件?
问题描述
我正在尝试使用 pyarrow 从 S3 读取一堆 gzip 压缩的 csv 文件。的文档页面pyarrow.csv.read_csv
说
如果是字符串或路径,并且以可识别的压缩文件扩展名结尾(例如“.gz”或“.bz2”</p>
不幸的是,我无法提供字符串值作为输入路径,因此 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)
推荐阅读
- javascript - 在 React 中创建一个包含可滚动行和可点击元素的表格
- python - 使用 python 进行面向对象编程中的简单原型设计与计划设计
- python - 使用 Azure Functions 请求和响应 JSON 格式的数据
- python - 如何在没有装饰器的情况下使异常处理代码可重用?
- android - 图片已上传到 Firebase 存储,但在应用 UI 中不可见
- android - 如何在 Expo React-Native 中使用下拉列表?
- python - sshtunnel 键盘交互
- clickhouse - 如何处理 Clickhouse 的 AggregatingMergeTree 物化视图中的嵌套字段?
- json - 如何使用请求主体和方法PUT在spring控制器中传递两个自定义类型的参数
- c - 在运行 Linux 的 Cortex-A72 Armv8 上检查 SCTLR_EL1 寄存器中的单个位