Apache Arrow 1.0: stabiles Spaltenformat für die In-Memory-Datenverarbeitung

Mit dem neuen Release führt das Software-Framework für spaltenorientierte In-Memory-Datenverarbeitung die semantische Versionierung ein.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Datenverarbeitung: Apache Arrow 1.0 schickt den Pfeil ins stabile Spaltenformat
Lesezeit: 4 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Apache Arrow ist mit umfangreichen Stabilitätsgarantien in Version 1.0.0 erschienen. Die runde Versionsnummer soll signalisieren, dass es sich nun auch offiziell um ein auf- und abwärts kompatibles Release handelt, insbesondere das Spaltenformat gilt nun als binärstabil. Inoffiziell waren ältere Versionen von Apache Arrow bereits vorher abwärtskompatibel bis Dezember 2017.

Die Apache Software Foundation hatte das Framework für spaltenorientierte In-Memory-Datenverarbeitung Anfang 2016 zum Top-Level-Projekt der Open-Source-Organisation erklärt, und trotz der niedrig klingenden Versionierung ist es bereits das 18. größere Release. Apache Arrow 1.0 markiert nun den Übergang zu einer künftig semantischen Versionierung der Arrow-Software-Bibliotheken.

Apache Arrow bietet ein gemeinsames Speicherformat ohne Overhead für zahlreiche Big-Data-Systeme und schickt sich an, ein neuer Standard für spaltenorientierte In-Memory-Datenverarbeitung zu werden. Rückendeckung hatte das Projekt von Anfang an durch zahlreiche bei Apache gelistete Big-Data-Projekte wie Cassandra, Drill, HBase, Spark und Storm, aber auch Projekte außerhalb von Apache wie Pandas haben die Entwicklung gefördert.

Seit der letzten Version sind 3 Monate vergangen, über 800 Probleme haben die Arrow-Entwickler zwischenzeitlich behoben. Im Zuge der Neuausrichtung der Versionierung erfährt auch die Versionierung der Metadaten eine Änderung und wird von V4 auf V5 angehoben, damit geht offenbar eine inkompatible Änderung im Puffer-Layout der Union Types einher. Ansonsten sollen laut Release Notes alle Typen das gleiche Layout wie in der Metadaten-Version 4 beibehalten.

Für die Aufwärtskompatibilität ist V5 um einige Formate ergänzt, so sollen die Metadaten nun nicht unterstützte Änderungen künftiger Bibliotheksversionen automatisch erkennen. Die Bibliotheken sollen abwärtskompatibel bleiben mit Daten, die bis maximal Version 0.8.0 zurückreichen (Dezember 2017). Laut Release Notes sind die Java- und C++-Bibliotheken in der Lage, weiterhin anwendungsinterne Nachrichten zu erzeugen, die mit der Metadaten-Version 4 kompatibel sind.

Bei den Wörterbuch-Indizes sind jetzt vorzeichenlose Ganzzahlen erlaubt (zuvor mussten Ganzzahlen mit Vorzeichen versehen sein). Dezimaltypen haben nun ein optionales Feld bidWidth, das standardmäßig auf 128 eingestellt ist – dies soll künftige Unterstützung von anderen Dezimalbreiten als 32- und 64-Bit ermöglichen. Das Arrow-Team hat die Integrationstests erweitert, um Erweiterungstypen auf verschachtelte Wörterbücher zu testen. Einzelheiten lassen sich der Implementierungsmatrix entnehmen.

Dazu passend gibt es auch Neuigkeiten vom Unterprojekt Arrow Flight, einem 2019 vorgestellten Client-Server-Framework für hochperformanten Transport großer Datenmengen über Netzwerk-Schnittstellen. Arrow Flight ist auf die Übermittlung des Arrow-Spaltenformats über gRPC spezialisiert. Die Integration mit gRPC gilt nicht als exklusives Ziel der Entwicklung,

Arrow Flight bietet mit DoGet im neuen Release einen vollständig bidirektionalen Datenendpunkt in C++, Java und Python, zusätzlich zu den bestehenden Endpunkten DoPut und DoExchange. Server und Clients können jetzt die Lese- und Schreiboptionen von Arrow IPC (Interprozess-Kommunikation) in verschiedenen Sprachen einstellen, was die Version mit früheren Versionen von Arrow Flight kompatibler machen soll. In C++ und Python stellt Flight jetzt offenbar mehr Optionen von gRPC zur Verfügung und eröffnet die Möglichkeit, Low-Level-gRPC-Clientoptionen zu setzen. Auch gegenseitige TLS-Authentifizierung ist laut Release Notes jetzt möglich, und der Client kann offenbar die Größe einer Datennachricht in der Leitung kontrollieren.

Weitere Neuerungen betreffen die erweiterte Unterstützung für C++ und für weitere Programmiersprachen wie Java, Python, Ruby, Rust und R gibt es im Detail kleinere Änderungen und Ergänzungen in der Unterstützung durch Apache Arrow.

Mehr Details lassen sich den Release Notes entnehmen. Eine Übersicht über sämtliche technische Änderungen bietet ein Blogeintrag mit dem Changelog, die jeweils aktuellste Version steht auf GitHub bereit. Die genauen Bedingungen der semantischen Versionierung sind im Arrow-Blog einsehbar. Interessierte können die ursprüngliche Ankündigung von Apache Arrow als Top-Level-Projekt bei Apache auf heise Developer nachlesen.

(sih)