Apache Arrow 2 улучшает поддержку C ++ и Rust


Вышел новый выпуск Apache Arrow с улучшенной поддержкой C ++ и Rust, в частности, с поддержкой Parquet.

Apache Arrow — это платформа разработки для аналитики в памяти. В нем есть технологии, которые позволяют системам больших данных быстро обрабатывать и перемещать данные. Он не зависит от языка, может использоваться для плоских и иерархических данных, а хранилище данных организовано для эффективных аналитических операций. Он также предоставляет вычислительные библиотеки. В настоящее время поддерживаются следующие языки: C, C ++, C #, Go, Java, JavaScript, MATLAB, Python, R, Ruby и Rust.

Основные компоненты проекта включают столбчатый формат In-memory и формат IPC: который обеспечивает сериализацию формата Arrow и связанных метаданных для связи между процессами и гетерогенными средами. Также существует протокол RPC Arrow Flight, который обеспечивает строительный блок для удаленных служб, обменивающихся данными Arrow с приложениями.

Улучшения поддержки C ++ в этом выпуске начинаются с обработки паркета. Вложенные данные в Parquet обрабатываются лучше, и вы можете читать и записывать произвольно вложенные данные, включая типы расширений с вложенным типом хранилища. Побочным эффектом этого было исправление нескольких ошибок при записи вложенных данных и FixedSizeList. Наборы данных Parquet теперь также можно записывать с разделами, включая контроль над накоплением статистики для отдельных столбцов. Другие улучшения C ++ включают добавление вычислительных ядер для стандартного отклонения, дисперсии и режима, а также улучшения поддержки S3, включая автоматическое определение области.

Поддержка C # также была улучшена за счет добавления полной поддержки типов Struct и добавления API синхронной записи для ArrowStreamWriter и ArrowFileWriter.

R Поддержка была расширена за счет возможности записи многофайловых наборов данных с разделением на Parquet или Feather. Теперь вы также можете читать и писать прямо в AWS S3.

Разработчики говорят, что, хотя реализации Java и C / C ++ (используемые Python и R) Arrow, вероятно, останутся наиболее многофункциональными, реализация Rust быстро устраняет пробелы в функциях, а версия 2.0 включает множество улучшений в Реализация на Rust.

Вычислительные ядра Rust Arrow были улучшены за счет добавления новых ядер для строковых операций, включая substring, min, max, concat и length. Многие ядра были улучшены для поддержки массивов, закодированных по словарю, и оптимизированы для массивов без нулей, что в этом случае значительно ускорило их работу. Работа над писателем Rust Parquet для данных Arrow не вошла в этот выпуск, и теперь планируется к выпуску 3.0.0.

Компонент Rust также работал над DataFusion, механизмом запросов в памяти с API DataFrame и SQL, построенным на основе базовой поддержки Arrow. DataFusion теперь имеет более богатый API DataFrame и более масштабируемые запросы из-за изменения использования async / await с потоковой средой выполнения tokio вместо запуска выделенных потоков.

DataFusion также имеет улучшенную скалярную функцию как в SQL, так и в API DataFrame, включая длину строки, COUNT (столбец DISTINCT, IsNotNullMin / Max для строк, массив столбцов и конкатенацию строк.


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