簡體   English   中英

使用 Athena 讀取 s3 中的 Parquet 文件

[英]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.

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