S3 Express One
Ende 2023 hat AWS die S3 Express One Zone angekündigt, eine Hochgeschwindigkeitsvariante herkömmlicher S3-Buckets.
DuckDB kann S3-Express-One-Buckets mit der httpfs-Erweiterung lesen.
Anmeldedaten und Konfiguration
Die Konfiguration von S3-Express-One-Buckets ähnelt der herkömmlicher S3-Buckets, mit einer Ausnahme: Sie müssen den Endpunkt nach folgendem Muster angeben:
s3express-⟨availability_zone⟩.⟨region⟩.amazonaws.comwobei die ⟨availability_zone⟩{:.language-sql .highlight} (z. B. use-az5) auf der Konfigurationsseite des S3-Express-One-Buckets steht und ⟨region⟩{:.language-sql .highlight} die AWS-Region ist (z. B. us-east-1).
Damit DuckDB beispielsweise einen S3-Express-One-Bucket nutzen kann, konfigurieren Sie den Secrets Manager wie folgt:
CREATE SECRET ( TYPE s3, KEY_ID '⟨AKIAIOSFODNN7EXAMPLE⟩', SECRET '⟨wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY⟩', REGION '⟨us-east-1⟩', ENDPOINT 's3express-⟨use1-az5⟩.⟨us-east-1⟩.amazonaws.com');Instanzstandort
Für beste Leistung sollte die EC2-Instanz in derselben Availability Zone liegen wie der S3-Express-One-Bucket, den Sie abfragen.
Die Zuordnung zwischen Zonennamen und Zonen-IDs erhalten Sie mit dem Befehl aws ec2 describe-availability-zones.
-
Zuordnung Zonenname zu Zonen-ID:
Terminal window aws ec2 describe-availability-zones --output json \| jq -r '.AvailabilityZones[] | select(.ZoneName == "us-east-1f") | .ZoneId'use1-az5 -
Zuordnung Zonen-ID zu Zonenname:
Terminal window aws ec2 describe-availability-zones --output json \| jq -r '.AvailabilityZones[] | select(.ZoneId == "use1-az5") | .ZoneName'us-east-1f
Abfragen
Sie können den S3-Express-One-Bucket wie jeden anderen S3-Bucket abfragen:
SELECT *FROM 's3://express-bucket-name--use1-az5--x-s3/my-file.parquet';Leistung
Die folgenden Experimente liefen auf einer Instanz c7gd.12xlarge mit der LDBC-SF300-Comments-creationDate-Parquet-Datei (auch verwendet in den Mikrobenchmarks des Leistungsleitfadens).
| Experiment | Dateigröße | Laufzeit |
|---|---|---|
| Nur Laden aus Parquet | 4.1 GB | 3.5 s |
| Lokale Tabelle aus Parquet anlegen | 4.1 GB | 5.1 s |
Die Variante „Nur Laden“ führt das Laden als Teil einer EXPLAIN ANALYZE-Anweisung aus, um die Laufzeit zu messen, ohne eine lokale Tabelle anzulegen. Die Variante „lokale Tabelle anlegen“ verwendet CREATE TABLE ... AS SELECT, um eine persistente Tabelle auf der lokalen Festplatte zu erstellen.