Есть новая версия Apache Arrow, которая описывается как важная веха для проекта. Apache Arrow — это столбчатый слой аналитики в памяти, который разрешает произвольный доступ.
Arrow — это не отдельная программа. Он используется в качестве компонента в системах для ускорения аналитики и позволяет системам с поддержкой Arrow обмениваться данными с низкими накладными расходами. Он достаточно гибкий, чтобы поддерживать самые сложные модели данных.
Apache Arrow можно использовать для хранения набора канонических представлений в памяти плоских и иерархических данных вместе с несколькими языковыми привязками для управления структурой. Он также обеспечивает потоковую передачу и пакетную передачу сообщений с низкими накладными расходами, межпроцессное взаимодействие с нулевым копированием (IPC) и реализацию общих алгоритмов.
Тодд Липкон, первый создатель Apache Kudu и член комитета по управлению проектами Apache Arrow, сказал, что Apache Arrow важен, потому что:
«Столбчатый уровень данных в памяти позволяет системам и приложениям обрабатывать данные с полной аппаратной скоростью. Современные процессоры предназначены для использования параллелизма на уровне данных с помощью векторизованных операций и инструкций SIMD. Стрелка облегчает такую обработку».
Во многих рабочих нагрузках 70-80% циклов ЦП тратятся на сериализацию и десериализацию данных. Arrow решает эту проблему, позволяя разделять данные между системами и процессами без сериализации, десериализации или копий памяти.
Компонент может быть особенно полезен для разработчиков Python и R, поскольку Arrow предоставляет возможность взаимодействия с данными, что было одним из основных препятствий на пути к более тесной интеграции с системами больших данных.
Преимущества Apache Arrow начинаются с его столбчатой структуры памяти, которая допускает произвольный доступ. Макет обеспечивает высокую эффективность кеширования в рабочих нагрузках аналитики и поддерживает оптимизацию SIMD с использованием современных процессоров. Это позволяет разработчикам создавать очень быстрые алгоритмы, обрабатывающие структуры данных Arrow.
Еще одним преимуществом является способность Arrow обеспечивать эффективный и быстрый обмен данными между системами без затрат на сериализацию, связанных с другими системами, такими как Thrift, Avro и Protocol Buffers.
Последним преимуществом Arrow является гибкость ее структурированной модели данных, которая поддерживает сложные типы. Он обрабатывает плоские таблицы, а также реальные рабочие нагрузки инженерии данных, подобные JSON.
Этот выпуск является важной вехой для проекта, поскольку он добавляет интеграционные тесты, проверяющие двоичную совместимость между реализациями Java и C ++ (и Python).
Еще одно улучшение новой версии — это новый двоичный формат потоковой передачи (с реализациями Java и C ++ / Python).
Функциональность Python была значительно расширена, в частности совместимость pandas и Apache Parquet. Добавлен «формат» файла JSON для определения интеграционных тестов, а также расширен потокобезопасный ввод-вывод с нулевым копированием или низкими накладными расходами для C ++.