在python中从url读取羽毛文件



我使用api网关代理s3读取羽毛文件。下面是我使用的最简单的代码:

import pandas as pd
s3_data=pd.read_feather('https://<api_gateway>/<bucket_name/data.feather>')

给出一个错误-

reader = _feather.FeatherReader(source, use_memory_map=memory_map)
File "pyarrow_feather.pyx", line 75, in pyarrow._feather.FeatherReader.__cinit__
File "pyarrowerror.pxi", line 143, in pyarrow.lib.pyarrow_internal_check_status
File "pyarrowerror.pxi", line 114, in pyarrow.lib.check_status
OSError: Verification of flatbuffer-encoded Footer failed.

如果我把羽毛文件保存在我的本地,像下面这样读,一切正常。

s3_data=pd.read_feather("file://localhost//C://Users//<Username>//Desktop//data.feather")

我如何使它工作?

可能网关代理需要做一些重定向,这使得它失败。我应该这样做:

from s3fs import S3FileSystem
fs = S3FileSystem(anon=True)
with fs.open("<bucket>/data.feather") as f:
df = pd.read_feather(f)

s3fs是Dask的一部分。您还可以使用其他类似的图层。

PS:如果您使用feather进行长期数据存储,Apache Arrow项目建议不要这样做(feather的维护者)。你应该用镶木地板。

最新更新