如何解决Sage maker notebook 中的 Athena 查询如何获取输出文件的位置以实现可重用性?
我的查询有效:
from pyathena import connect
import pandas as pd
conn = connect(s3_staging_dir='s3://alphabucket/query-results/myfolder/',region_name='us-east-1')
df = pd.read_sql("select * from mydbname.mytablename limit 8;",conn)
如何......下次我运行笔记本时,我想避免再次运行查询。
我正在寻找可以返回结果文件的 API。
例如:
df = pd.read_sql("select * from mydbname.mytablename limit 8;",conn)
file = conn.last_query_output_location() # Hypothetical function Doesnt Work
print(file) # --> s3://alphabucket/query-results/myfolder/2021/07/23/dfjj00772hh.csv
解决方法
您可以通过将数据帧作为 csv 文件上传到您的 S3 存储桶来保存查询结果的数据帧。然后从 S3 存储桶中的 csv 重新创建一个数据帧。
# after dataframe created with Athena query.
import boto3
# Save on EC2 storage
file_name = "mydata.csv"
df.to_csv(file_name)
# Upload to S3
s3 = boto3.resource('s3')
s3.meta.client.upload_file(file_name,bucket,file_key)
通过从 S3 读取数据重新创建数据帧
s3uri = 's3://{}/{}'.format(bucket,file_key)
df = pd.read_csv(s3uri)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。