[英]How to directly read excel file from s3 with pandas in airflow dag?
我正在尝试从带有 python 的 aiflow dag 中的 s3 读取一个 excel 文件,但它似乎不起作用。 这很奇怪,因为当我使用 pd.read_excel(s3_excel_path) 从外部 airflow 读取它时它起作用了。
我做了什么:
正如我所说,当我在 Airflow 之外尝试时,它会起作用。此外,我没有收到任何错误,dag 只是继续无限期地运行(在它应该读取文件的步骤)并且没有任何反应,即使我等20分钟。
(我想避免从 s3 下载文件,对其进行处理,然后将其上传回 s3,这就是我尝试直接从 s3 读取它的原因)
注意:我也不使用 csv。
编辑:同样,我不能将我的 dataframe 直接保存到 S3,在 airflow dag 中使用 df.to_csv('s3_path'),而我可以在 python 中保存
要使用 pandas 读取存储在 S3 中的数据文件,您有两种选择,使用 boto3(或 AWS CLI)下载它们并读取本地文件,这是您未锁定的解决方案,并使用 pandas 支持的 s3fs API:
import os
import pandas as pd
AWS_S3_BUCKET = os.getenv("AWS_S3_BUCKET")
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY")
AWS_SESSION_TOKEN = os.getenv("AWS_SESSION_TOKEN")
key = "path/to/excel/file"
books_df = pd.read_excel(
f"s3://{AWS_S3_BUCKET}/{key}",
storage_options={
"key": AWS_ACCESS_KEY_ID,
"secret": AWS_SECRET_ACCESS_KEY,
"token": AWS_SESSION_TOKEN,
},
)
要使用此解决方案,您需要安装s3fs
和apache-airflow-providers-amazon
pip install s3fs
pip install apache-airflow-providers-amazon
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.