Apache Arrow добавляет двоичный формат потоковой передачи


Есть новая версия 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 ++.


Добавить комментарий