Apache Parquet

From Wikipedia, the free encyclopedia

Apache Parquet ist ein quelloffenes spaltenorientiertes 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 Dremel entwickelt.[2]

Schnelle Fakten Basisdaten ...
Apache Parquet
Basisdaten
Entwickler Apache Parquet
Erscheinungsjahr 13. März 2013
Aktuelle Version 1.16.0[1]
(3. September 2025)
Programmier­sprache Java
Kategorie Datenformat
Lizenz Apache-Lizenz 2.0
https://parquet.apache.org/
Schließen

Geschichte

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 es ein Top-Level-Projekt der Apache Software Foundation.[5][6]

Parquet Format

Beschreibung des Parquet Schema

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
Weitere Informationen Layout einer Parquet-Datei ...
Layout einer Parquet-Datei
#---- Parquet File ----
  Header:
  - Magic Number (PAR1)
  - Footer-Länge (berechnetes
    Offset zum Start des Footers)

#---- 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 Chunks 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
Schließen

Cloud-Speicher und Data Lakes

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

Related Articles

Wikiwand AI