我已经使用 pyathena 运行了一个查询,并创建了一个 pandas 数据框。有没有办法将 pandas 数据框直接写入 AWS athena 数据库? 就像 MYSQL 数据库的 data.to_sql 一样。
下面分享一个数据帧代码示例以供引用,需要写入AWS athena数据库:
data=pd.DataFrame({'id':[1,2,3,4,5,6],'name':['a','b','c','d','e','f'],'score':[11,22,33,44,55,66]})
最佳答案
实现此目标的另一种现代方法(截至 2020 年 2 月)是使用 aws-data-wrangler图书馆。它可以自动执行数据处理中的许多常规(有时甚至是烦人的)任务。
结合问题中的案例,代码如下所示:
import pandas as pd
import awswrangler as wr
data=pd.DataFrame({'id':[1,2,3,4,5,6],'name':['a','b','c','d','e','f'],'score':[11,22,33,44,55,66]})
# Typical Pandas, Numpy or Pyarrow transformation HERE!
wr.pandas.to_parquet( # Storing the data and metadata to Data Lake
dataframe=data,
database="database",
path="s3://your-s3-bucket/path/to/new/table",
partition_cols=["name"],
)
这非常有帮助,因为 aws-data-wrangler知道从路径中解析表名(但您可以在参数中提供表名)并根据数据帧在 Glue 目录中定义适当的类型。
它也有助于使用 Athena 直接向 pandas 数据框查询数据:
df = wr.pandas.read_table(database="dataase", table="table")
所有过程都将快捷方便。
关于python - 将 pandas 数据帧写入 AWS athena 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56286093/