将 pandas 数据帧写入 AWS athena 数据库

Pri*_*amJ 4 python database pandas amazon-athena

我已经使用 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]})
Run Code Online (Sandbox Code Playgroud)

Rob*_*ado 7

实现此目标的另一种现代方法(截至 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"],
)
Run Code Online (Sandbox Code Playgroud)

这非常有用,因为aws-data-wrangler知道从路径解析表名称(但您可以在参数中提供表名称)并根据数据帧在 Glue 目录中定义正确的类型。

它还有助于使用 Athena 直接向 pandas 数据框查询数据:

df = wr.pandas.read_table(database="dataase", table="table")
Run Code Online (Sandbox Code Playgroud)

整个过程将变得快捷、方便。

  • AWS-data-wrangler 更新了如何保存到 S3 中的镶木地板。您可以在此处查看更新的文档:https://readthedocs.org/projects/aws-data-wrangler/downloads/pdf/latest/ (3认同)