pandas - Pandas:如何访问内部 netapp 存储网格文件
问题描述
我在公司基础架构中有 NetApp 存储网格 (S3)。我是 S3 的新手。在 Pandas 中处理一个 csv 文件后,我需要将此文件写入 S3。存储网格的 URL 是https://myCompanys3.storage.net,存储桶是“test_bucket”。我提到了https://stackoverflow.com/a/51777553/13065899
根据 Python/Pandas/S3 上的其他阅读,按照以下步骤操作:
- 在我的用户文件夹(Windows 笔记本电脑)中创建文件夹 .aws
- 使用以下条目创建凭据文件:
'''
[default]
aws_access_key_id=myAccessKey
aws_secret_access_key=mySecretAccessKey
'''
- 点安装 s3fs
- 写了这行代码:
df.to_csv('https://myCompanys3.storage.net/test_bucket/myTest.csv')
得到这个错误: urllib.error.HTTPError: HTTP Error 403: Forbidden 上面 to_csv 中给出的路径是构造文件完整路径的正确方法吗?
到目前为止,我看到的所有示例都以 's3://' 开头,而不是完整的 url。
s3 是一个关键字并且需要任何读/写存储网格吗?
试过了
df.to_csv('s3://https://s3.medcity.net://hpg-dl-dev/PandasInvoiceTest.csv', index=False)
收到此错误:无效的存储桶名称“https:”:存储桶名称必须匹配正则表达式“^[a-zA-Z0-9.-_]{1,255}$”
有人可以帮我解决我所缺少的吗?也许是我将 url 外部化的 s3 配置?
先感谢您。
解决方案
- 用于
boto3
建立连接并下载文件 - 将字符串对象流式传输到
pd.read_csv()
usingio.StringIO()
import boto3, json
from pathlib import Path
import io
with open(Path.cwd().joinpath("aws-secrets.json")) as f: cfg = json.load(f)
sess = boto3.session.Session(region_name=cfg["REGION_NAME"],
aws_access_key_id=cfg["ACCESS_ID"],
aws_secret_access_key=cfg["ACCESS_KEY"])
pd.read_csv(io.StringIO(
sess.resource("s3").Object("silicon-myfiles", "elevationdata.csv").get()["Body"].read().decode()
))
推荐阅读
- javascript - Vue.js - 如何获取和设置组件输入字段的值?
- android - 会话应用程序错误启动活动 - 如何解决?
- javascript - angularjs输入范围写在交叉气泡内
- android - 按下后退按钮时退出应用程序
- javascript - WebExtention find 语句
- angular - Angular ngClass:动态应用类
- google-sheets - 谷歌表格 ARRAYFORMULA 和 IF 条件
- eclipse - 在 Eclipse / Intershop studio 中的“”期间发生内部错误
- android - 杀死应用程序后未调用 BroadcastReceiver
- sqoop - Sqoop 在没有 lastmodified 日期时无法检测到更新