簡體   English   中英

AWS Athena 分區

[英]AWS Athena Partitioning

我已經閱讀了 Athena 中的分區數據,但是當 S3 具有以下結構時,尚不清楚如何為表創建分區:

aws s3 ls s3://xxx-s3-zzz-datalake-prod/yyy/2022/09/
                       PRE 01/
                       PRE 02/
                       PRE 03/
                       PRE 04/
                       PRE 05/
                       PRE 06/
                      etc...

我怎樣才能為這種結構創建分區,這可能嗎? 或者我應該將其重命名為

aws s3 ls s3://xxx-s3-yyy-datalake-prod/zzz/2022/09/
                       PRE day=01/
                       PRE day=02/
                       PRE day=03/
                       etc...

然后添加PARTITIONED BY (day int)

在這兩種情況下都可以添加分區,在這些情況下您必須使用不同的方法。如果您有以下格式的數據:

aws s3 ls s3://xxx-s3-zzz-datalake-prod/yyy/2022/09/
                       PRE 01/
                       PRE 02/
                       PRE 03/
                       PRE 04/
                       PRE 05/
                       PRE 06/
                      etc...

然后,您只能使用以下查詢將這些分區信息添加到表中:

ALTER TABLE orders ADD
  PARTITION (day = '01') LOCATION 's3://xxx-s3-zzz-datalake-prod/yyy/2022/09/01'
  PARTITION (day = '02') LOCATION 's3://xxx-s3-zzz-datalake-prod/yyy/2022/09/02';

有關更多信息,請參閱下面的鏈接。

https://docs.aws.amazon.com/athena/latest/ug/alter-table-add-partition.html

還可以嘗試通過在 PARTITIONED BY 子句中添加年份和月份來向表中添加更多分區,因為僅添加一天不會有任何好處。

在以下結構的情況下,它很簡單:

aws s3 ls s3://xxx-s3-yyy-datalake-prod/zzz/2022/09/
                       PRE day=01/
                       PRE day=02/
                       PRE day=03/
                       etc...

在這里,您可以運行MSCK REPAIR TABLE <table-name> ,它將自動使用分區信息填充表,因為結構采用 Hive 鍵值支持格式。同樣的信息也可以通過 Glue 爬蟲添加。

下面的鏈接對 hive 樣式和非 hive 樣式分區格式有更多說明。

https://aws.amazon.com/premiumsupport/knowledge-center/athena-create-use-partitioned-tables/

暫無
暫無

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

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