簡體   English   中英

我們如何將 dataframe 寫入 AWS Athena 中的表?

[英]How can we write a dataframe to a table in AWS Athena?

我通讀了 Pandas 的 AWS 文檔,看來您應該能夠將 dataframe 寫入 Athena 的表中。 當我運行下面的代碼時,我收到一條錯誤消息,上面寫着“ValueError:需要超過 2 個值才能解包”。

import awswrangler as wr
import pandas as pd

df = pd.DataFrame({
"id": [1, 2, 3],
"value": ["foo", "boo", "zoo"],
"name": ["teddy", "timmy", "tommy"]
})
print(df)

wr.s3.to_parquet(
    df=df,
    path='s3://client/awsdatacatalog/',
    dataset=True,
    mode="overwrite",
    database="client_rs",
    table='newtable'
)
wr.s3.read_parquet(path, dataset=True)

知道這里可能有什么問題。 這看起來很簡單,但無論如何,它不起作用。

https://readthedocs.org/projects/aws-data-wrangler/downloads/pdf/latest/

我嘗試了與您完全相同的代碼,但沒有發現任何問題。 同樣使用此腳本,您不會直接寫入 Athena,而是將寫入 Glue 目錄,Athena 可以從中讀取表信息並從 S3 檢索數據。對我來說,這看起來像是版本問題,您可以使用以下應該修復的版本它給你。

使用的 python 版本:

prabhakar@MacBook-Pro Downloads % python3 --version
Python 3.9.6
prabhakar@MacBook-Pro D

使用的 awsdatawrangler 版本:

prabhakar@MacBook-Pro Downloads % pip3 freeze | grep awswrangler
awswrangler==2.16.1
prabhakar@MacBook-Pro Downloads % 

我使用的腳本與您使用的腳本完全相同,但表和數據庫名稱不同:

import awswrangler as wr
import pandas as pd

df = pd.DataFrame({
"id": [1, 2, 3],
"value": ["foo", "boo", "zoo"],
"name": ["teddy", "timmy", "tommy"]
})
print(df)

wr.s3.to_parquet(
    df=df,
    path='s3://testing/sf_73750110/',
    dataset=True,
    mode="overwrite",
    database="sampledb",
    table='newtable'
)
df = wr.s3.read_parquet("s3://testing/sf_73750110/", dataset=True)


df = wr.athena.read_sql_query("SELECT * FROM newtable", database="sampledb")
print(df.head())

下面是生成的 output ,其中我能夠將鑲木地板表寫入 Glue 目錄/s3 並使用 Athena 讀取它:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM