⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
S3 Express One

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

Credentials and Configuration

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管理器

CREATE SECRET (
    TYPE S3,
    REGION 'us-east-1',
    KEY_ID 'AKIAIOSFODNN7EXAMPLE',
    SECRET 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
    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
    

Querying

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

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

Performance

我们在一个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在本地磁盘上创建一个持久表。