Benutzer:TheRubyC/Apache Parquet
Apache Parquet ist ein freies, quelloffenes, spaltenbasiertes Format zur Datenspeicherung aus dem Apache Hadoop Ökosystem. Es ist ähnlich zu den ebenfalls aus Hadoop stammenden Formaten RCFile und ORC und ist kompatibel mit den meisten Datenverarbeitungs-Frameworks rund um Hadoop. Es bietet eine effiziente Komprimierung und Encoding Schemes mit verbesserter Performance.
Geschichte
[Bearbeiten | Quelltext bearbeiten]Apache Parquet entstand als Gemeinschaftsprojekt von Twitter und Cloudera. Parquet sollte das Trevni columnar storage Format verbessern, das von Doug Cutting, dem Entwickler von Hadoop, entwickelt wurde.
Die erste Version, Apache Parquet 1.0, wurde im Juli 2013 veröffentlicht. Seit 27. April 2015 ist Apache Parquet ein Top-Level-Projekt der Apache Software Foundation.
Parquet wurde als Verbesserung des Trevni columnar storage Formates entwickelt, das von Doug Cutting, dem Entwickler von Hadoop erstellt wurdeThe open-source project to build Apache Parquet began as a joint effort between Twitter[1] and Cloudera.[2] Parquet was designed as an improvement on the Trevni columnar storage format created by Doug Cutting, the creator of Hadoop. The first version, Apache ParquetVorlage:Nbsp1.0, was released in July 2013. Since April 27, 2015, Apache Parquet has been a top-level Apache Software Foundation (ASF)-sponsored project.[3][4]
Features
[Bearbeiten | Quelltext bearbeiten]Apache Parquet ist mit dem Record-Shredding- und Assembly-Algorithmus [5] implementiert, der die komplexen Datenstrukturen, die zur Speicherung von Daten verwendet werden können[6], berücksichtigt. Die Werte in jeder Spalte werden an zusammenhängenden Speicherplätzen gespeichert, was folgende Vorteile mit sich bringt:[7]
- Die spaltenweise Komprimierung ist effizient im Speicherplatz
- Kodierungs- und Komprimierungstechniken, die auf den Datentyp in jeder Spalte abgestimmt sind, können verwendet werden
- Abfragen, die bestimmte Spaltenwerte abrufen, müssen nicht die gesamte Zeile lesen, was die Leistung verbessert.
Apache Parquet ist mit dem Apache Thrift-Framework implementiert, was seine Flexibilität erhöht; es kann mit einer Reihe von Programmiersprachen wie C++, Java, Python, PHP usw. arbeiten. [8]
Seit August 2015[9] unterstützt Parquet die Big-Data-Verarbeitungsframeworks wie Apache Hive, Apache Drill, Apache Impala, Apache Crunch, Apache Pig, Cascading, Presto und Apache Spark. Es ist eines der externen Datenformate, die von der Python-Datenverarbeitungs- und -Analysebibliothek Pandas verwendet werden.
Komprimierung und Kodierung
[Bearbeiten | Quelltext bearbeiten]In Parquet wird die Kompression spaltenweise durchgeführt, so dass für Text- und Integer-Daten unterschiedliche Kodierungsverfahren verwendet werden können. Das ermöglicht auch die Verwendung neuerer und besserer Kodierungsverfahren, die in der Zukunft noch entwickelt werden könnten.
Kodierung von Wörterbüchern
[Bearbeiten | Quelltext bearbeiten]Parquet verfügt über eine automatische Wörterbuchkodierung, die dynamisch für Daten mit einer geringen Anzahl eindeutiger Werte (d. h. unter 105) aktiviert wird und eine erhebliche Komprimierung ermöglicht und die Verarbeitungsgeschwindigkeit erhöht.[10]
Bit packing
[Bearbeiten | Quelltext bearbeiten]Die Speicherung ganzer Zahlen erfolgt in der Regel mit 32 oder 64 Bit pro Ganzzahl. Bei kleinen Ganzzahlen ist die Speicherung effizienter, wenn mehrere Ganzzahlen in denselben Speicherplatz gepackt werden.[10]
Um die Speicherung des mehrfachen Auftretens desselben Wertes zu optimieren, wird ein einzelner Wert zusammen mit der Anzahl des Auftretens einmal gespeichert.[10]
Parquet implementiert eine Mischform aus Bitpacking und RLE, bei der die Kodierung je nachdem, was die besten Komprimierungsergebnisse liefert, umgeschaltet wird. Diese Strategie funktioniert gut für bestimmte Arten von Integer-Daten und lässt sich gut mit der Wörterbuchkodierung kombinieren.[10]
Vergleich
[Bearbeiten | Quelltext bearbeiten]Apache Parquet ist vergleichbar mit den Dateiformaten RCFile und Optimized Row Columnar (ORC) - alle drei fallen unter die Kategorie der kolumnaren Datenspeicherung innerhalb des Hadoop-Ökosystems. Sie alle haben eine bessere Komprimierung und Kodierung mit einer verbesserten Leseleistung auf Kosten einer langsameren Schreibgeschwindigkeit. Zusätzlich zu diesen Funktionen unterstützt Apache Parquet eine begrenzte Schema-Evolution, d. h. das Schema kann entsprechend den Änderungen in den Daten geändert werden. Es bietet auch die Möglichkeit, neue Spalten hinzuzufügen und Schemata zusammenzuführen, die sich nicht widersprechen.
Apache Arrow ist als In-Memory-Ergänzung zu On-Disk-Spaltenformaten wie Parquet und ORC konzipiert. Die Projekte Arrow und Parquet enthalten Bibliotheken, die das Lesen und Schreiben zwischen den beiden Formaten ermöglichen.
See also
[Bearbeiten | Quelltext bearbeiten]- Apache Arrow
- Apache Pig
- Apache Hive
- Apache Impala
- Apache Drill
- Apache Kudu
- Apache Spark
- Apache Thrift
- Trino (SQL query engine)
- Presto (SQL query engine)
- SQLite embedded database system
Referenzen
[Bearbeiten | Quelltext bearbeiten]Weblinks
[Bearbeiten | Quelltext bearbeiten]- Offizielle Webseite von Apache Spark
- The Parquet Format and Performance Optimization Opportunities auf YouTube
- Dremel paper
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Release Date.
- ↑ Introducing Parquet: Efficient Columnar Storage for Apache Hadoop - Cloudera Engineering Blog. 13. März 2013, archiviert vom am 4. Mai 2013; abgerufen am 22. Oktober 2018 (amerikanisches Englisch).
- ↑ Apache Parquet paves the way for better Hadoop data storage. 28. April 2015 .
- ↑ The Apache Software Foundation Announces Apache™ Parquet™ as a Top-Level Project : The Apache Software Foundation Blog. 27. April 2015 .
- ↑ The striping and assembly algorithms from the Google-inspired Dremel paper. In: github. Abgerufen am 13. November 2017.
- ↑ Apache Parquet Documentation.
- ↑ Apache Parquet Cloudera.
- ↑ Apache Thrift.
- ↑ Supported Frameworks.
- ↑ a b c d Announcing Parquet 1.0: Columnar Storage for Hadoop | Twitter Blogs. In: blog.twitter.com. Abgerufen am 14. September 2016.