[英]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.