⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
S3 Express One

2023年末,AWS 宣布推出 S3 Express One Zone,这是传统 S3 存储桶的高速变体。DuckDB 可以使用 httpfs 扩展来读取 S3 Express One 存储桶。

凭据和配置

S3 Express One 存储桶的配置与 常规 S3 存储桶类似,但有一个例外:我们必须按照以下模式指定端点。

s3express-availability_zone.region.amazonaws.com

其中,availability_zone(例如 use-az5)可以从 S3 Express One 存储桶的配置页面获取,而 region 则是 AWS 区域(例如 us-east-1)。

例如,要允许 DuckDB 使用 S3 Express One 存储桶,请按如下方式配置 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 存储桶位于同一可用区。要确定可用区名称和可用区 ID 之间的映射,请使用 aws ec2 describe-availability-zones 命令。

  • 可用区名称到可用区 ID 的映射

    aws ec2 describe-availability-zones --output json \
        | jq -r '.AvailabilityZones[] | select(.ZoneName == "us-east-1f") | .ZoneId'
    
    use1-az5
    
  • 可用区 ID 到可用区名称的映射

    aws ec2 describe-availability-zones --output json \
        | jq -r '.AvailabilityZones[] | select(.ZoneId == "use1-az5") | .ZoneName'
    
    us-east-1f
    

查询

您可以像查询任何其他 S3 存储桶一样查询 S3 Express One 存储桶。

SELECT *
FROM 's3://express-bucket-name--use1-az5--x-s3/my-file.parquet';

性能

我们还在 c7gd.12xlarge 实例上进行了两项实验,使用了 LDBC SF300 Comments creationDate Parquet 文件(该文件也用于 性能指南的微基准测试)。

实验 文件大小 运行时长
仅从 Parquet 加载 4.1 GB 3.5 秒
从 Parquet 创建本地表 4.1 GB 5.1 秒

“仅加载”变体是将加载作为 EXPLAIN ANALYZE 语句的一部分运行,以测量不包含创建本地表的运行时长,而“创建本地表”变体则使用 CREATE TABLE ... AS SELECT 在本地磁盘上创建持久表。