[英]How to partition a table in AWS Athena?
我正在尝试构建一个使用 Athena 来呈现 Cloudtrail 日志的应用程序。 一个简单的查询大约需要 4 分钟。 它扫描大约 200 GB。 我正在寻找的是:(查询中至少使用了这些字段之一)[事件名称、事件时间、用户名、事件源、资源类型、资源名称]
例如
SELECT eventid,
eventname,
eventsource,
resources [ 1 ].arn,
resources [ 1 ].type,
useridentity.username
FROM My_Table
WHERE useridentity.username = 'username'
AND eventtime BETWEEN '2022-07-10T13:14' AND '2022-07-27T13:14'
如何优化查询时间? 我阅读了 Amazon Athena 的 10 大性能调优技巧。 我正在尝试对数据进行分区,但是我发现的所有文章和示例都没有太大帮助。
有人可以为我提供一种分区数据的方法吗? 或者,如果有另一种方法可以加速性能。 (我已经有一张桌子,所以我想ALTER
它,我的 S3 存储桶 URI 是这样的: XXXXXXXXXXXXXXX/us-east-1/2022/07/25/
我建议您首先以 Snappy 压缩 Parquet 格式创建一个表。
您可以从现有表创建新表并转换格式。
CREATE TABLE new_table
WITH (
format = 'Parquet',
write_compression = 'SNAPPY',
external_location ='s3://my-bucket/tables/parquet_table/')
AS SELECT *
FROM old_table;
请注意,这将在指定的位置创建新的数据文件。 请记住,删除 Amazon Athena 中的表不会删除 Amazon S3 存储桶中的数据。
然后,您可以使用new_table
比较性能。
如果您想添加分区,请使用partitioned_by
运行相同的命令。
有关详细信息,请参阅: 创建表作为 - Amazon Athena
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.