S3 Express One
In late 2023, AWS announced the S3 Express One Zone, a high-speed variant of traditional S3 buckets.
Goose 可通过 httpfs 扩展读取 S3 Express One bucket。
凭据与配置
S3 Express One bucket 的配置与常规 S3 bucket基本一致,但有一个例外: 你必须按如下模式指定 endpoint:
s3express-⟨availability_zone⟩.⟨region⟩.amazonaws.com
其中,⟨availability_zone⟩(如 use-az5)可在 S3 Express One bucket 配置页获取,
⟨region⟩ 为 AWS region(如 us-east-1)。
例如,要让 Goose 使用 S3 Express One bucket,可按如下方式配置 Secrets manager:
CREATE SECRET (
TYPE s3,
KEY_ID '⟨AKIAIOSFODNN7EXAMPLE⟩',
SECRET '⟨wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY⟩',
REGION '⟨us-east-1⟩',
ENDPOINT 's3express-⟨use1-az5⟩.⟨us-east-1⟩.amazonaws.com'
);
实例位置
为获得最佳性能,请确保 EC2 实例与被查询的 S3 Express One bucket 位于同一可用区。
要确定 zone name 与 zone ID 的映射,可使用 aws ec2 describe-availability-zones 命令。
-
Zone name 到 zone ID 的映射:
aws ec2 describe-availability-zones --output json \
| jq -r '.AvailabilityZones[] | select(.ZoneName == "us-east-1f") | .ZoneId'use1-az5 -
Zone ID 到 zone name 的映射:
aws ec2 describe-availability-zones --output json \
| jq -r '.AvailabilityZones[] | select(.ZoneId == "use1-az5") | .ZoneName'us-east-1f
查询
你可以像查询普通 S3 bucket 一样查询 S3 Express One bucket:
SELECT *
FROM 's3://express-bucket-name--use1-az5--x-s3/my-file.parquet';
性能
以下实验在 c7gd.12xlarge 实例上进行,使用的是 LDBC SF300 Comments creationDate Parquet file(该数据也用于性能指南中的微基准)。
| Experiment | File size | Runtime |
|---|---|---|
| Loading only from Parquet | 4.1 GB | 3.5 s |
| Creating local table from Parquet | 4.1 GB | 5.1 s |
“loading only” 变体是将加载操作放在 EXPLAIN ANALYZE 中执行,用于测量运行时间而不实际创建本地表;“creating local table” 变体则使用 CREATE TABLE ... AS SELECT 在本地磁盘创建持久化表。