Spaltenbasierte Speicherformate verwenden
Apache Parquet
Spaltenbasierte Speicherformate haben die folgenden Eigenschaften, wodurch sie sich für die Verwendung mit Athena eignen:
-
Komprimierung nach Spalte mit dem für den Spaltendatentyp ausgewählten Komprimierungsalgorithmus, um Speicherplatz in Amazon S3 zu sparen und Festplattenspeicher und die I/O-Vorgänge während der Abfrageverarbeitung zu reduzieren.
-
Prädikat-Pushdown in Parquet und ORC ermöglicht Athena-Abfragen, um nur die tatsächlich benötigten Blöcke abzurufen, wobei die Abfrageleistung verbessert wird. Wenn eine Athena-Abfrage Werte aus bestimmten Spalten von Ihren Daten erhält, verwendet es Statistiken von Datenblockprädikaten, wie z. B. Max.-/Min.-Werte, um festzustellen, ob der Block zu lesen oder zu überspringen ist.
-
Das Aufteilen von Daten in Parquet und ORC ermöglicht Athena das Lesen von Daten an mehrere Leser und die Erhöhung der Parallelität während der Abfrageverarbeitung.
Um Ihre vorhandenen Rohdaten von anderen Speicherformaten für Parquet oder ORC zu konvertieren, können Sie CREATE TABLE AS SELECT (CTAS)-Abfragen in Athena ausführen und ein Datenspeicherformat als Parquet oder ORC angeben, oder verwenden Sie den AWS Glue-Crawler.
Wählen Sie zwischen Parquet und ORC
Die Wahl zwischen ORC (Optimized Row Columnar) und Parquet hängt von Ihren spezifischen Nutzungsanforderungen ab.
Apache Parquet bietet effiziente Datenkomprimierungs- und Kodierungsschemata und ist ideal für die Ausführung komplexer Abfragen und die Verarbeitung großer Datenmengen. Parquet ist für die Verwendung mit Apache Arrow
ORC bietet eine effiziente Möglichkeit, Hive-Daten zu speichern. ORC-Dateien sind oft kleiner als Parquet-Dateien, und ORC-Indizes können Abfragen beschleunigen. Darüber hinaus unterstützt ORC komplexe Typen wie Strukturen, Maps und Listen.
Wenn Sie zwischen Parquet und ORC wählen, sollten Sie die folgenden Faktoren berücksichtigen:
Abfrageleistung – Da Parquet eine breitere Palette von Abfragetypen unterstützt, ist Parquet möglicherweise die bessere Wahl, wenn Sie komplexe Abfragen ausführen möchten.
Komplexe Datentypen – Wenn Sie komplexe Datentypen verwenden, ist ORC möglicherweise die bessere Wahl, da es ein breiteres Spektrum an komplexen Datentypen unterstützt.
Dateigröße – Wenn der Speicherplatz ein Problem darstellt, führt ORC in der Regel zu kleineren Dateien, wodurch die Speicherkosten gesenkt werden können.
Komprimierung – Sowohl Parquet als auch ORC bieten eine gute Komprimierung, aber welches Format für Sie am besten geeignet ist, hängt von Ihrem spezifischen Anwendungsfall ab.
Evolution – Sowohl Parquet als auch ORC unterstützen die Schemaentwicklung, was bedeutet, dass Sie im Laufe der Zeit Spalten hinzufügen, entfernen oder ändern können.
Sowohl Parquet als auch ORC sind eine gute Wahl für Big-Data-Anwendungen. Berücksichtigen Sie jedoch die Anforderungen Ihres Szenarios, bevor Sie sich entscheiden. Möglicherweise möchten Sie Benchmarks für Ihre Daten und Abfragen durchführen, um herauszufinden, welches Format für Ihren Anwendungsfall besser geeignet ist.
Konvertieren in spaltenbasierte Formate
Optionen zum einfachen Konvertieren von Quelldaten wie JSON oder CSV in ein Säulenformat, umfassen die Verwendung von CREATE TABLE AS-Abfragen oder das Ausführen von Aufträgen in AWS Glue.
-
Sie können
CREATE TABLE AS(CTAS)-Abfragen verwenden, um Daten in Parquet oder ORC in einem Schritt zu konvertieren. Ein Beispiel finden Sie unter Beispiel: Schreiben von Abfrageergebnissen in ein anderes Format auf der Beispiele für CTAS-Abfragen-Seite. -
Informationen zur Verwendung von Athena für ETL zur Umwandlung von Daten aus CSV in Parquet finden Sie unter Verwenden von CTAS und INSERT INTO für ETL und Datenanalyse.
-
Informationen zum Ausführen eines AWS Glue-Auftrags zur Umwandlung von CSV-Daten in Parquet finden Sie im Abschnitt „Daten vom CSV in Parquet-Format umwandeln“ im AWS-Blogbeitrag zu Big Data Entwickeln einer Data-Lake-Grundlage mit AWS Glue und Amazon S3
. AWS Glue unterstützt die Verwendung derselben Technik zum Konvertieren von CSV-Daten in ORC- oder JSON-Daten in Parquet oder ORC.