[英]Reading Parquet files in s3 with Athena
目標是將多個鑲木地板文件合並到一個 Athena 表中,以便我可以查詢它們。
我從 csv 轉換了兩個鑲木地板文件:
pandas.read_csv('a.csv').to_parquet('a.parquet', index=False)
pandas.read_csv('b.csv').to_parquet('b.parquet', index=False)
CSV 的格式為id,name,age
,例如:
1,john,20
2,mark,25
我將這些上傳到 S3 存儲桶: s3://my-test-bucket
,其排列如下:
my-test-bucket
-> folder1
-> a.parquet
-> folder2
-> b.parquet
然后通過以下方式在 Athena 中創建表:
CREATE EXTERNAL TABLE `my_table`(
`id` int,
`name` string,
`age` int
)
STORED AS PARQUET
LOCATION 's3://my-test-bucket'
tblproperties ("parquet.compress"="SNAPPY");
但是,當我嘗試通過以下方式查詢表時:
SELECT * FROM my_table;
我得到空行作為我的回報。 有什么我想念的嗎?
一種可能的解決方法是使用AWS Data Wrangler :
import awswrangler as wr
path = 's3://my-test-bucket'
# Assume the data has been extracted in dict form from .csv
df = pd.DataFrame({
"id": [1, 2],
"name": ["John", "Jane"],
"age": [10, 11],
"folder": [1, 2]
})
wr.s3.to_parquet(
df=df,
path=path,
dataset=True,
mode="overwrite",
partition_cols=["folder"]
)
這將在 s3 中生成:
my-test-bucket
-> folder=1
-> <some hash>.parquet
-> folder=2
-> <some hash>.parquet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.