Super Sale WeekClaude Skills — 20% OFF
Glossary

Parquet-Dateien meistern: Struktur, Anwendungsfälle und wesentliche Vorteile

Powerdrill Bloom·
Parquet-Dateien meistern: Struktur, Anwendungsfälle und wesentliche Vorteile

Eine Parquet-Datei speichert Daten spalten- statt zeilenweise. Das Apache Parquet-Projekt beschreibt sie als „ein quelloffenes, spaltenorientiertes Datendateiformat, das für eine effiziente Datenspeicherung und -abfrage entwickelt wurde“. Diese eine Designentscheidung erklärt, warum sie kleiner ist, sich schneller abfragen lässt und sich schwerer per Doppelklick öffnen lässt.

Was ist eine Parquet-Datei?

Parquet ist ein Dateiformat für tabellarische Daten, das als Apache-Projekt gepflegt wird. In der offiziellen Dokumentation heißt es, dass es „leistungsstarke Komprimierungs- und Kodierungsschemata bietet, um komplexe Daten in großen Mengen zu verarbeiten“. Sie fügt hinzu, dass das Format „in vielen Programmiersprachen und Analysetools unterstützt wird“.

Die entscheidende Eigenschaft ist die Ausrichtung. Eine CSV schreibt jeweils eine Zeile auf einmal: jedes Feld von Datensatz eins, dann jedes Feld von Datensatz zwei. Parquet schreibt jeweils eine Spalte auf einmal: jeden Wert der ersten Spalte, dann jeden Wert der zweiten.

Das klingt nach einer technischen Spielerei. Es hat jedoch zwei wesentliche Konsequenzen. Werte in einer einzelnen Spalte ähneln sich meist, wodurch sie sich weitaus besser komprimieren lassen als eine gemischte Zeile. Und eine Abfrage, die nur drei von neunzig Spalten benötigt, kann genau diese drei lesen, anstatt jede Zeile zu scannen, nur um den Großteil davon wieder zu verwerfen.

Das Format ist formal spezifiziert. In der Apache-Dokumentation wird darauf hingewiesen, dass „das Repository parquet-format die offizielle Spezifikation des Parquet-Dateiformats hostet und definiert, wie Daten strukturiert und gespeichert werden“.

Wie eine Parquet-Datei strukturiert ist

Der Umschlag

Jede Parquet-Datei beginnt und endet mit denselben vier Bytes. Die Spezifikation zeigt eine „4-Byte-Magic-Number 'PAR1'“ am Anfang und dieselbe Magic Number ganz am Ende.

Dazwischen befinden sich die Daten und gegen Ende die Metadaten. Direkt vor der abschließenden Magic Number befindet sich eine „4-Byte-Länge in Bytes der Dateimetadaten (Little Endian)“. Dieser Wert teilt einem Reader mit, wie weit er zurückspringen muss, um den Metadatenblock zu finden.

Zeilengruppen und Spalten-Chunks

Innerhalb des Umschlags werden die Daten zweifach unterteilt. Die Spezifikation beschreibt eine Datei mit „N Spalten in dieser Tabelle, aufgeteilt in M Zeilengruppen“.

Eine Zeilengruppe ist ein horizontaler Ausschnitt – ein Stapel von Zeilen. Innerhalb jeder Zeilengruppe werden die Werte jeder Spalte zusammen als Spalten-Chunk gespeichert. Eine Datei mit 90 Spalten und 10 Zeilengruppen enthält also 900 Spalten-Chunks, von denen jeder eine zusammenhängende Reihe von Werten einer einzelnen Spalte darstellt.

Diese doppelte Unterteilung ermöglicht das selektive Lesen. Eine Abfrage kann ganze Zeilengruppen überspringen, die keine passenden Zeilen enthalten können, und dann nur die benötigten Spalten-Chunks aus den verbleibenden Gruppen lesen.

Warum die Metadaten am Ende stehen

Das überrascht viele, die einen Header erwarten. Die Apache-Dokumentation erklärt den Grund direkt: „Dateimetadaten werden nach den Daten geschrieben, um ein Schreiben in einem einzigen Durchgang zu ermöglichen“.

Ein Writer, der einen großen Datensatz streamt, kennt die endgültigen Byte-Positionen der einzelnen Chunks erst, wenn er sie geschrieben hat. Wenn die Metadaten am Ende stehen, muss er nie zurückgehen und einen Header korrigieren.

Daraus ergibt sich das Lesemuster. Laut Dokumentation enthalten die Dateimetadaten „die Positionen aller Startpositionen der Spalten-Chunks“. Sie fügt hinzu, dass „von Readern erwartet wird, dass sie zuerst die Dateimetadaten lesen, um alle Spalten-Chunks zu finden, an denen sie interessiert sind“.

Wofür Parquet verwendet wird

Typischerweise begegnet Ihnen eine .parquet-Datei in einer von vier Situationen.

Exporte aus Data Warehouses. Wenn jemand eine große Tabelle aus einem modernen Warehouse exportiert, ist dies oft der Standard, da die Datei überschaubar bleibt.

Speicherung im Data Lake. Dateien, die im Cloud-Objektspeicher liegen, nutzen es häufig, eben weil Engines eine Teilmenge von Spalten lesen können, ohne alles herunterladen zu müssen.

Übergaben zwischen Teams. Ein Data Engineer, der Ihnen die Transaktionen eines ganzen Jahres sendet, wird oft darauf zurückgreifen, anstatt auf eine CSV, die um ein Vielfaches größer wäre.

Austausch zwischen Analysetools. Da das Format von vielen Sprachen und Tools unterstützt wird, wandert es ohne zwischengeschalteten Konvertierungsschritt zwischen Systemen hin und her.

Der gemeinsame Nenner ist die Größe. Es wird genau an dem Punkt zur naheliegenden Wahl, an dem eine CSV nicht mehr komfortabel zu handhaben ist.

Parquet vs CSV

Parquet CSV
Ausrichtung Spaltenorientiert Zeilenorientiert
In einem Texteditor lesbar Nein, es ist binär Ja
Typische Dateigröße Kleiner, durch Spaltenkomprimierung Größer bei gleichen Daten
Einige Spalten lesen Liest nur diese Spalten-Chunks Liest die gesamte Datei
Datentypen In den Dateimetadaten enthalten Vom öffnenden Programm interpretiert
Öffnen per Doppelklick In der Regel nicht Öffnet sich meist in einer Tabellenkalkulation
Bestens geeignet für Große Tabellen, wiederholte Abfragen Kleine Tabellen, schnelle Überprüfung, universelle Freigabe

Das Verhalten bei Datentypen verdient eine Erwähnung. Eine CSV hat keine Ahnung, ob 00123 eine Zahl oder eine Zeichenkette ist, weshalb führende Nullen und Daten beim Import oft fehlerhaft dargestellt werden. Parquet zeichnet Typen in seinen Metadaten auf, sodass der geschriebene Wert genau dem gelesenen Wert entspricht.

Für die zeilenorientierte Seite dieses Vergleichs deckt der CSV-Leitfaden dasselbe Thema aus der anderen Richtung ab. Die TSV-Analyse befasst sich mit der tabulatorgetrennten Variante.

Wichtigste Vorteile

Komprimierung, die sich tatsächlich summiert. Das Speichern ähnlicher Werte nebeneinander bietet dem Encoder viel mehr Spielraum. Die Apache-Dokumentation verweist auf „leistungsstarke Komprimierungs- und Kodierungsschemata“.

Spalten-Pruning (Column Pruning). Das Lesen von drei von neunzig Spalten verursacht in etwa nur den I/O-Aufwand von drei statt von neunzig Spalten.

Überspringen von Zeilengruppen (Row Group Skipping). Da die Metadaten aufzeichnen, was sich in jeder Zeilengruppe befindet, kann ein Reader ganze Abschnitte verwerfen, ohne sie überhaupt anzufassen.

Datentypen überstehen den Transport. Datumsangaben bleiben Datumsangaben und Identifikatoren behalten ihre führenden Nullen, da das Schema innerhalb der Datei mitgeliefert wird.

Schreiben in einem Durchgang (Single-Pass Writing). Metadaten am Ende bedeuten, dass sehr große Dateien als Stream geschrieben werden können.

Breite Unterstützung. Die Dokumentation weist auf die Unterstützung in „vielen Programmiersprachen und Analysetools“ hin, sodass es sich selten um eine Sackgasse handelt.

Wo Parquet an seine Grenzen stößt

Parquet löst die Speicherung und den Abruf. Es beantwortet jedoch keine der Fragen, die Sie zum tatsächlichen Inhalt der Datei haben.

Es ist binär, Sie können also keinen schnellen Blick darauf werfen. Das Öffnen einer CSV, um zu prüfen, ob die Umsatzspalte brutto oder netto ist, dauert fünf Sekunden. Eine Binärdatei erfordert ein Tool, bevor Sie überhaupt etwas sehen können.

Es eignet sich auch schlecht für kleine Datenmengen. Bei einer Nachschlagetabelle mit 200 Zeilen überwiegen der Metadaten-Overhead und die Tool-Anforderungen jeglichen Komprimierungsvorteil. Eine CSV ist in diesem Fall das bessere Format, und dies ehrlich anzuerkennen, gehört zur optimalen Nutzung von Parquet dazu.

Und es sagt nichts über die Qualität aus. Die Datei kann perfekt typisierten, effizient komprimierten Unsinn enthalten. Doppelte Datensätze, eine Währungsspalte, die zwei Währungen mischt, eine Kunden-ID, deren Schema sich im März geändert hat. Das Format garantiert Originaltreue, nicht Richtigkeit.

Wie man mit einer Parquet-Datei arbeitet, wenn man kein Entwickler ist

Hier liegt die praktische Lücke. Die meisten Business-Tools setzen eine Tabellenkalkulation voraus, und eine .parquet-Datei lässt sich nicht so einfach öffnen wie eine CSV.

Der pragmatische Weg ist ein Konvertierungsschritt. Bitten Sie den Ersteller der Datei um einen CSV- oder Excel-Auszug der Spalten, die Sie tatsächlich benötigen, oder konvertieren Sie sie selbst mit einem beliebigen Parquet-kompatiblen Tool. Sie verlieren zwar den Komprimierungsvorteil, was jedoch keine Rolle spielt, sobald sich die Daten auf Ihrem Rechner befinden und eingegrenzt sind.

Von da an ist die Arbeit eine ganz normale Analyse. Auf der Preisseite von Powerdrill Bloom sind Uploads für Excel, CSV, PDF und Dokumente aufgeführt, sodass ein konvertierter Auszug direkt hochgeladen werden kann. Fragen werden in natürlicher Sprache gestellt, anstatt als Abfragen geschrieben zu werden. Der CSV-AI-Assistent deckt diesen Weg ab, und Datenkonnektoren decken die Fälle ab, in denen die Daten besser abgerufen als exportiert werden.

Der wichtige Unterschied besteht darin, dass Parquet eine Speicherentscheidung ist, die Ihnen vorgelagert ist. Es ist kein Analysetool, und die Konvertierung in ein anderes Format, sobald die Datei auf Ihrem Schreibtisch landet, ist völlig normal und kein Notbehelf.

Fazit

Parquet ist ein spaltenorientierter Speicher, dessen Schema und Index sich am Ende der Datei befinden. Dieses Design ermöglicht Komprimierung, selektives Lesen und zuverlässige Datentypen, weshalb es zum Standard für große Datenmengen geworden ist.

Was es jedoch nicht bietet, ist Sichtbarkeit. In dem Moment, in dem die Datei jemanden erreicht, der Antworten statt Speicherplatz benötigt, ist der sinnvollste nächste Schritt meist ein eingegrenzter Auszug und eine Frage.

Wenn Sie sich an diesem Punkt befinden, probieren Sie Powerdrill Bloom mit der konvertierten Datei aus und beginnen Sie damit, sie in ein Diagramm umzuwandeln.

Häufig gestellte Fragen

Wofür wird eine Parquet-Datei verwendet?

Parquet wird zur effizienten Speicherung großer tabellarischer Datensätze verwendet. Es wird häufig für Exporte aus Data Warehouses, die Speicherung in Data Lakes, die Übergabe zwischen Teams und den Austausch zwischen Analysetools eingesetzt. Der Grund dafür ist, dass es sich gut komprimieren lässt und das Lesen nur ausgewählter Spalten unterstützt.

Ist Parquet besser als CSV?

Für große Tabellen, die wiederholt abgefragt werden, ja: Es ist kleiner, überträgt Datentypen und unterstützt Spalten-Pruning. Für kleine Tabellen, die Sie überprüfen oder weiträumig teilen müssen, ist CSV einfacher, da es sich um Text handelt und überall geöffnet werden kann.

Kann I eine Parquet-Datei in Excel öffnen?

Nicht per Doppelklick, da Parquet ein Binärformat und kein Textformat ist. Der übliche Ansatz besteht darin, die Datei zuerst in CSV oder Excel zu konvertieren oder ein Tool zu verwenden, das Parquet direkt liest.

Warum werden Parquet-Metadaten am Ende der Datei gespeichert?

Die Apache-Dokumentation erklärt, dass Metadaten nach den Daten geschrieben werden, „um ein Schreiben in einem einzigen Durchgang zu ermöglichen“. Ein Writer, der einen großen Datensatz streamt, kennt die endgültigen Chunk-Positionen nicht im Voraus. Das Schreiben der Metadaten am Ende verhindert daher, dass ein Header nachträglich bearbeitet werden muss.

Was sind Zeilengruppen in Parquet?

Eine Zeilengruppe ist ein horizontaler Ausschnitt der Tabelle. Die Spezifikation beschreibt die Spalten einer Datei als „aufgeteilt in M Zeilengruppen“, wobei jede Spalte als separater Chunk innerhalb jeder Gruppe gespeichert wird. Dieses Layout ermöglicht es Readern, sowohl Gruppen als auch Spalten zu überspringen, die sie nicht benötigen.