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

标签 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]})

最佳答案

实现此目标的另一种现代方法(截至 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/

相关文章:

python - JSON 包含不正确的 UTF-8\u00ce\u00b2 而不是 Unicode\u03b2,如何在 Python 中修复?

python - 删除 "not"之后的第一个单词

php - 有没有一种方法可以在不运行MAMP的情况下访问mysql数据库?

ruby-on-rails - Rails ActiveRecord 连接到错误的 Postgres 数据库

python - 从多索引数据框中选择列,例如制作直方图

python - 如何使用 Python 将 Tick by Tick 数据转换为 OHLC 烛台数据?

python - 为什么带有正参数的 relativedelta 返回过去的日期?

database - 在数据库列中存储分隔列表真的那么糟糕吗?

python - 重构数据帧中列乘法中的错误 'code smell'

python - 在 PiCloud 环境服务器上使用共享库