微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sage maker notebook 中的 Athena 查询如何获取输出文件的位置以实现可重用性?

如何解决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 重新创建一个数据帧。

ref: boto3 upload_file

# 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 举报,一经查实,本站将立刻删除。