Apache Arrow
| Apache Arrow
| |
|---|---|
| Basisdaten
| |
| Entwickler | Apache Arrow Committee |
| Erscheinungsjahr | 17. Februar 2016[1] |
| Aktuelle Version | 22.0.0[2] (24. Oktober 2025) |
| Kategorie | Datenformat |
| Lizenz | Apache-Lizenz 2.0 |
| arrow.apache.org | |
Apache Arrow ist ein sprachunabhängiges Software-Framework für die Entwicklung von Datenanalyseanwendungen. Ein wesentlicher Bestandteil ist ein spaltenorientiertes In-Memory-Format. Es verwendet eine standardisierte, sprachunabhängige Spezifikation zur Darstellung hierarchisch strukturierter und tabellenähnlicher Datensätze im Arbeitsspeicher. Es ermöglicht effiziente Analysevorgänge auf moderner CPU- und GPU-Hardware.[3][4] Das Framework reduziert oder beseitigt Faktoren, die die Arbeit mit großen Datensätzen einschränken, wie die Volatilität oder die physikalischen Einschränkungen des dynamischen Arbeitsspeichers und kann so Kosten sparen.[5]
Geschichte
Appache Arrow ist seit 2016 ein Apache Top Level Projekt. Im Jahr 2005 wurde von MonetDB eine wissenschaftliche Arbeit vorgestellt in der die Architektur einer neuen SIMD-Instruktionen verwendende vektorbasierte Query-Engine für MonetDB beschrieben wurde. Die Leistung fiel aber stark ab, wenn der Cache überlastet wurde. Erst mit dem Erscheinen des Google Demel Paper[6][7] wurden Wege aufgezeigt, die spaltenorientierte Datenbanken effizient einsetzbar machten. Darauf hin entwickelten Twitter und Cloudera entwickelten darauf hin Apache Parquet und Hortonworks in Zusammenarbeit mit Facebook Apache ORC. Parquet und ORC führten zu einer signifikanten Effizienzsteigerung im Daten-Prozessing von Hadoop. Apache Arrow wurde später von dremel.io entwickelt um Daten aus diesen spaltenorienten Speicherformaten im Hauptspeicher zwischen unterschiedlichen Progammiersprachen wie Java, C++, Python und R zu verschieben und direkt auswertbar zu machen.[8]
Interoperabilität
Arrow kann mit Apache Parquet, Apache Spark, NumPy, PySpark, pandas und anderen Datenverarbeitungsbibliotheken verwendet werden. Das Projekt umfasst native Programmbibliotheken, die in C, C++, C#, Go, Java, JavaScript, Julia, MATLAB, Python (PyArrow)[9], R (arrow_table)[10], Ruby und Rust geschrieben sind. Arrow ermöglicht Zero-Copy-Lesevorgänge und schnellen Datenzugriff sowie Datenaustausch ohne Serialisierungsaufwand zwischen diesen Sprachen und Systemen.
Anwendungen
Arrow wird in verschiedenen Bereichen eingesetzt, darunter Analytik[11], Genomik[12][13] und Cloud Computing.[14]
Vergleich mit Apache Parquet, ORC und DuckDB-Speicherformat
Apache Parquet, Apache ORC und DuckDB sind beliebte Beispiele für spaltenorientierte Datenformate auf Festplatte. Arrow wurde als Ergänzung zu diesen Formaten für die Verarbeitung von Daten im Arbeitsspeicher entwickelt.[15] Apache Arrow wurde als In-Memory-Format optimiert. Damit fallen Anforderungen wie Verschlüsselung und sparsame Speicherplatzverwendung sowie schneller Datentransfer durch komprimierte Datenpakete weg, die sowohl bei Apache Parquet und ORC wichtige Merkmale darstellen. Der Wegfall von Verschschlüsselung und Datenkomprimierung reduziert die CPU-Last erheblich.[16] Die Projekte Arrow und Parquet umfassen Bibliotheken, die das Lesen und Schreiben von Daten zwischen den beiden Formaten ermöglichen.[9]. Das Format von DuckDB ähnelt dem von Apache Arrow, ist aber noch mehr auf Ausführung von Analyse-Abfrage ausgelegt, verfügt aber für das Abspeichern auf Festplatten über Komprimierungs-Algorithmen.[17]
Einzelnachweise
- ↑ Origin and History of Apache Arrow. (abgerufen am 16. November 2025).
- ↑ Release 22.0.0. 24. Oktober 2025 (abgerufen am 11. November 2025).
- ↑ Apache Arrow Overview. The Apache Software Foundation, abgerufen am 16. November 2025 (amerikanisches Englisch).
- ↑ Serdar Yegulalp: Apache Arrow aims to speed access to big data. In: InfoWorld. 17. Februar 2016, abgerufen am 16. November 2025 (amerikanisches Englisch).
- ↑ Tanveer Ahmad: ArrowSAM: In-Memory Genomics Data Processing through Apache Arrow Framework. 21. August 2019, abgerufen am 16. November 2025 (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).
- ↑ 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).
- ↑ https://www.dremio.com/blog/origin-and-history-of-apache-arrow/
- ↑ a b Python — Apache Arrow v22.0.0. Abgerufen am 16. November 2025.
- ↑ 7 Manipulating Data - Tables | Apache Arrow R Cookbook. (apache.org [abgerufen am 16. November 2025]).
- ↑ Thomas W. Dinsmore: In-Memory Analytics. In: Disruptive Analytics: Charting Your Strategy for Next-Generation Business Analytics. Apress, Berkeley, CA 2016, ISBN 978-1-4842-1311-7, S. 97–116, doi:10.1007/978-1-4842-1311-7_5.
- ↑ Francesco Versaci, Luca Pireddu, Gianluigi Zanetti: Scalable genomics: from raw data to aligned reads on Apache YARN. 22. Februar 2017, abgerufen am 16. November 2025 (englisch).
- ↑ Tanveer Ahmad, Nauman Ahmed, Johan Peltenburg, Zaid Al-Ars: ArrowSAM: In-Memory Genomics Data Processing Using Apache Arrow. 6. April 2020, abgerufen am 16. November 2025 (englisch).
- ↑ Martin Maas, Krste Asanović, John Kubiatowicz: Return of the Runtimes: Rethinking the Language Runtime System for the Cloud 3.0 Era. In: Proceedings of the 16th Workshop on Hot Topics in Operating Systems (= HotOS '17). Association for Computing Machinery, New York, NY, USA 2017, ISBN 978-1-4503-5068-6, S. 138–143, doi:10.1145/3102980.3103003 (acm.org [abgerufen am 16. November 2025]).
- ↑ Julien LeDem: Apache Arrow and Apache Parquet: Why We Needed Different Projects for Columnar Data, On Disk and In-Memory. In: KDnuggets. Abgerufen am 16. November 2025 (amerikanisches Englisch).
- ↑ Daniel Abadi: DBMS Musings: Apache Arrow vs. Parquet and ORC: Do we really need a third Apache project for columnar data representation? In: DBMS Musings. 31. Oktober 2017, abgerufen am 16. November 2025.
- ↑ Mark Raasveldt: DuckDB – In-Process Analytical Database System. Folien für einen Kurs an der Carnegie Mellon University. S. 40 (cmu.edu [PDF]).