Apache Parquet
| Apache Parquet
| |
|---|---|
| Basisdaten
| |
| Entwickler | Apache Parquet |
| Erscheinungsjahr | 13. März 2013 |
| Aktuelle Version | 1.16.0[1] (3. September 2025) |
| Programmiersprache | Java |
| Kategorie | Datenformat |
| Lizenz | Apache-Lizenz 2.0 |
| https://parquet.apache.org/ | |
Apache Parquet ist ein Open Source spaltenorientierte Datenspeicher-Format und ist Basis für viele cloud-native Datenanalyse-Anwendungen. Es wurde 2013 von Twitter und Cloudera auf Basis eines Artikel über Google Dermel entwickelt.[2]
Geschichte
[Bearbeiten | Quelltext bearbeiten]Im Jahr 2010 veröffentlichte Sergey Melnik das VLDB 2010 Dremel Paper, in dem Google Dremel beschrieben wird.[3][4] Darauf basierend entwickelten Twitter und Cloudera Parquet als effizientes spaltenorientiertes Speicherformat für Apache Hadoop. Es wurde im Juli 2013 mit der Version 1.0 veröffentlicht. Seit 27. April 2015 ist ein Top-Level-Projekt der Apache Software Foundation.[5][6]
Parquet Format
[Bearbeiten | Quelltext bearbeiten]
Das binäre File-Format enthält mit „parquet.thrift“ formale Definition der Metadaten abgeleitet von Thrift. Darin ist beschrieben wie die folgenden Daten strukturiert und gespeichert sind.[7]
- Daten werden in Zeilengruppen partitioniert und innerhalb dieser Partitionen spaltenweise in Pages gespeichert. Die Datei beginnen mit einem Header, der auf den Beginn des Footers verweist. Im Footer befinden sich die Metadaten zur Beschreibung der Datenblöcke.
- Encoding- und Kompressionstechniken werden abhängig vom Datentyp jeder einzelnen Spalte optimiert.
- Werden nur einzelne von vielen Spalten abgefragt, wird nur dieser kleine Teilbereich der Daten gelesen.
- Parquet verwendet eine automatische Wörterbücher-Codierung, wobei insbesondere bei einer kleinen Zahl unterschiedlicher Werte eine hohe Datenkompression erreicht wird.
- Lauflängenkodierung-Bit-Packing-Hybrid ist eine Kombination aus Bit-Packing und Lauflängenkodierung, um wiederholte Werte effizienter zu speichern.[8]
- Die Verschlüsselung ist flexibel, es kann die gesamte Datei verschlüsselt werden oder auch nur einzelne Spalten mit schützenswerten Daten, wobei für jede Spalte ein eigener Schüssel anwendbar ist.[9]
- Für Geoinfomations-System-Anwendungen werden Geospatial-Datentypen bereitgestellt.[10]

Diagramm zum Parquet File-Format
| Layout einer Parquet-Datei |
|---|
#---- Parquet File ----
Header:
- Magic Number (PAR1)
- Footer-Länge (berechnetes
Offset zum Start des Footes)
#---- Row Groups ----
Row Group 1:
- Column Chunk (ID)
- Page 1 (Datenseite)
- Page 2 (Datenseite)
- Column Chunk (Teilnehmer)
- Page 1 (Datenseite)
- Page 2 (Datenseite)
- Column Chunk (Alter)
- Page 1 (Datenseite)
- Page 2 (Datenseite)
- Column Chunk (Staat)
- Page 1 (Datenseite)
- Page 2 (Datenseite)
Row Group 2:
(Weitere Column Cunks und Datenseiten)
#---- Footer ----
- Row Group Metadata:
- Zahl der Zeilen pro Row Group
- Byte offset und Datenlänge
- Column Chunk Metadata
- Column ID Metadata
- Offset und Datenlänge
- Kompressions-Algorithmus
- Encoding format
- Page Metadata
- Page Type
(Daten oder Wörterbuch)
- Offset und Datenlänge
- Min/Max Statistiken
- File Metadata:
- Schema (Spaltentypen und Sortierung)
- Erstellt von
- Key-Value Eigenschaften
- Magic Number (PAR1):
|
| Parquet-Datei mit einer Tabelle mit den Spalten: ID, Teilnehmer, Alter und Staat |
Cloud-Speicher und Data Lakes
[Bearbeiten | Quelltext bearbeiten]Parquet ist als Basisdateiformat in Cloud-basierten Data-Lake-Architekturen weit verbreitet. Cloud-Speichersysteme wie Amazon S3, Azure Data Lake Storage und Google Cloud Storage speichern Daten meist im Parquet-Format, da es eine effiziente spaltenorientierte Darstellung und Suchfunktionen bietet.
Data-Lake-Frameworks wie Apache Iceberg, Delta Lake, Ducklake und Apache Hudi bauen eine zusätzliche Metadatenschicht über Parquet-Dateien auf, um Funktionen wie Schema-Evolution, Time-Travel-Abfragen und ACID- konforme Transaktionen zu unterstützen. In diesen Architekturen dienen Parquet-Dateien als unveränderliche Speicherschicht, während die Data-Lake-Implementierung die Datenversionierung und Transaktionsintegrität verwaltet.
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Release 1.16.0. 3. September 2025 (abgerufen am 12. September 2025).
- ↑ Sergey Melnik et al.: Dremel: A Decade of Interactive SQL Analysis at Web Scale∗. In: VLDB Endowment Inc. (Hrsg.): Proceedings of the VLDB Endowment. Vol. 13, Nr. 12, ISSN 2150-8097, S. 3461–3472, doi:10.14778/3415478.3415568 (englisch).
- ↑ Sergey Melnik et al.: Dremel: Interactive Analysis of Web-Scale Datasets. In: VLDB Endowment Inc. (Hrsg.): Proceedings of the VLDB Endowment. Vol. 3, Nr. 1-2, ISSN 2150-8097, S. 3461–3472, doi:10.14778/1920841.1920886 (englisch).
- ↑ youtube: Melnik VLDB2020
- ↑ Sally: The Apache Software Foundation Announces Apache™ Parquet™ as a Top-Level Project. In: The ASF Blog. 27. April 2015, abgerufen am 9. November 2025 (amerikanisches Englisch).
- ↑ Justin Kestelyn: Introducing Parquet: Efficient Columnar Storage for Apache Hadoop. In: Cloudera. 27. April 2015, archiviert vom (nicht mehr online verfügbar); abgerufen am 9. November 2025 (amerikanisches Englisch).
- ↑ Julien Le Dem: parquet-format/README.md Parquet-Format. The Apache Software Foundation, archiviert vom (nicht mehr online verfügbar) am 20. Juli 2025; abgerufen am 10. November 2025 (englisch).
- ↑ Julien Le Dem: Parquet encoding definitions. Abgerufen am 10. November 2025 (englisch).
- ↑ Gidon Gershinsky: Parquet Modular Encryption. The Apache Software Foundation, abgerufen am 15. November 2025 (englisch).
- ↑ Gang Wu, Dewey Dunnington, Jia Yu: Geospatial Definitions. The Apache Software Foundation, abgerufen am 10. November 2025 (englisch).