Parquet
Was ist Parquet?
Apache Parquet ist ein spaltenorientiertes Open-Source-Datendateiformat, das für eine effiziente Datenspeicherung und -abfrage entwickelt wurde. Es bietet effiziente Datenkomprimierungs- und Codierungsschemata mit verbesserter Leistung für die Verarbeitung komplexer Daten in großen Mengen. Apache Parquet ist als gemeinsames Austauschformat für Batch- und interaktive Workloads konzipiert. Es ähnelt anderen in Hadoop verfügbaren Dateiformaten für die Spaltenspeicherung, nämlich RCFile und ORC.
Eigenschaften von Parquet
- Kostenloses Open-Source-Dateiformat.
- Sprachunabhängig.
- Spaltenbasiertes Format: Dateien werden nach Spalten und nicht nach Zeilen organisiert, was Speicherplatz spart und Analyseabfragen beschleunigt.
- Wird für Analyse-Anwendungsfälle (OLAP) verwendet, typischerweise in Verbindung mit herkömmlichen OLTP-Datenbanken.
- Hocheffiziente Datenkomprimierung und -dekomprimierung.
- Unterstützt komplexe Datentypen und erweiterte verschachtelte Datenstrukturen.
Vorteile von Parquet
- Gut zum Speichern von Big Data jeglicher Art (strukturierte Datentabellen, Bilder, Videos, Dokumente).
- Spart Cloud-Speicherplatz durch hocheffiziente spaltenweise Komprimierung und flexible Codierungsschemata für Spalten mit unterschiedlichen Datentypen.
- Erhöhter Datendurchsatz und höhere Leistung durch Techniken wie das Überspringen von Daten, wobei Abfragen, die bestimmte Spaltenwerte abrufen, nicht die gesamte Datenzeile lesen müssen.
Apache Parquet wird mithilfe des „Record-shredding-and-assembly“-Algorithmus implementiert, der die komplexen Datenstrukturen berücksichtigt, die zum Speichern der Daten verwendet werden können. Parquet ist für die Massenverarbeitung komplexer Daten optimiert und bietet verschiedene Möglichkeiten zur effizienten Datenkomprimierung und -codierung. Dieser Ansatz eignet sich besonders für Abfragen, die bestimmte Spalten aus einer großen Tabelle lesen müssen. Parquet ist in der Lage, nur die benötigten Spalten zu lesen, und minimiert so die E/A erheblich.
Vorteile der Speicherung von Daten in einem Spaltenformat:
- Spaltenspeicher wie Apache Parquet ist im Vergleich zu zeilenbasierten Dateien wie CSV auf Effizienz ausgelegt. Beim Abfragen und Spaltenspeichern können Sie die nicht relevanten Daten sehr schnell überspringen. Dadurch sind Aggregationsabfragen im Vergleich zu zeilenorientierten Datenbanken weniger zeitaufwändig. Diese Art der Speicherung hat zu Hardwareeinsparungen und einer minimierten Latenz beim Datenzugriff geführt.
- Apache Parquet wurde von Grund auf neu entwickelt. Daher ist es in der Lage, erweiterte verschachtelte Datenstrukturen zu unterstützen. Das Layout der Parquet-Datendateien ist für Abfragen optimiert, die große Datenmengen im Gigabyte-Bereich für jede einzelne Datei verarbeiten.
- Parquet unterstützt flexible Komprimierungsoptionen und effiziente Codierungsschemata. Da der Datentyp für jede Spalte ziemlich ähnlich ist, ist die Komprimierung jeder Spalte unkompliziert (was Abfragen noch schneller macht). Daten können mithilfe eines der verschiedenen verfügbaren Codecs komprimiert werden. Infolgedessen können verschiedene Datendateien unterschiedlich komprimiert werden.
- Apache Parquet funktioniert am besten mit interaktiven und Serverless-Technologien wie AWS Athena, Amazon Redshift Spectrum, Google BigQuery und Google Dataproc.
Unterschiede zwischen Parquet und CSV
CSV ist ein einfaches und gängiges Format, das von vielen Tools wie Excel, Google Sheets und zahlreichen anderen verwendet wird. Obwohl CSV-Dateien das Standardformat für Datenverarbeitungspipelines sind, weisen sie einige Nachteile auf:
- Amazon Athena und Spectrum werden basierend auf der pro Abfrage gescannten Datenmenge berechnet.
- Google und Amazon berechnen Ihnen eine Gebühr entsprechend der in GS/S3 gespeicherten Datenmenge.
- Die Gebühren für Google Dataproc sind zeitbasiert.
Parquet hat seinen Benutzern dabei geholfen, den Speicherbedarf bei großen Datensätzen um mindestens ein Drittel zu reduzieren. Darüber hinaus hat es die Scan- und Deserialisierungszeit und damit die Gesamtkosten erheblich verkürzt. In der folgenden Tabelle werden die Einsparungen sowie die Beschleunigung verglichen, die durch die Konvertierung von Daten aus CSV in Parquet erzielt werden.
Datensatz | Größe in Amazon S3 | Laufzeit der Abfrage | Gescannte Daten | Kosten |
Als CSV-Dateien gespeicherte Daten | 1 TB | 236 Sekunden | 1,15 TB | 5,75 $ |
Im Apache Parquet-Format gespeicherte Daten | 130 GB | 6,78 Sekunden | 2,51 GB | 0,01 $ |
Ersparnisse | 87 % weniger bei Verwendung von Parquet | 34 Mal schneller | 99 % weniger gescannte Daten | 99,7 % Ersparnis |
Parquet und Delta Lake
Das Open-Source-Projekt Delta Lake baut auf dem Parquet-Format auf und erweitert es durch zusätzliche Funktionen wie ACID-Transaktionen auf Cloud-Objektspeicher, Zeitreisen, Schemaentwicklung und einfache DML-Befehle (CREATE/UPDATE/INSERT/DELETE/MERGE). Delta Lake implementiert viele dieser wichtigen Funktionen durch die Verwendung eines geordneten Transaktionsprotokolls, das Data-Warehousing-Funktionalität in Cloud-Objektspeicher ermöglicht. Weitere Informationen finden Sie im Databricks-Blogpost Diving into Delta Lake: Unpacking the Transaction Log.