Обложка канала

Ivan Begtin

3903 @begtin

I am focused on Open Data, Procurement, e-Government, Open Government and other tech stuff

Ivan Begtin

4 года назад
Открыть в
Интересное чтение про обработку 22GB CSV файла с транзакциями с помощью Pandas [1] и к нему же в дополнение аналогичная задача решаемая с помощью движка Deephaven [2], автор декларирует 60-кратное ускорение её выполнения через преобразование данных в формат Parquet. Интересно было бы увидеть и сравнение с другими инструментами, например, с тем же Zed [3], но общая мысль такова что надо использовать правильные инструменты для разных задач. По своему опыту могу сказать что для задач дата-инженерии Pandas так себе инструмент, скорее узнаваемый, но не самый быстрый и для задач обработки больших данных есть другие подходы. Идеальный сценарий при неограниченных ресурсах - это ELT подход, когда вначале тот же CSV файл загружается в базу первичных данных и далее уже с данными внутри СУБД делаются все необходимые манипуляции, например, через dbt. Сценарии при неограниченных ресурсах начинаются с ревизии того где находятся наибольшие ограничения: процессор, память, дисковое хранилище и тд. Например, в задачах обработки данных где есть построчная изоляция преобразования, а то есть результат преобразования зависит только от содержания данных в одно записи, и не зависит от других записей, самым очевидным оказывается разделение набора данных на потоковые батчи и обработка в n-ное число потоков или процессов. Другой путь в преобразовании изначальных данных из CSV в форматы более пригодные для обработки, такие как тот же Parquet, собственно об этом и пишут в блоге Deephaven. Есть и много других способов, подходов, трюков. Что я могу сказать, так то что многие задачи решаются не теми инструментами которыми пользуются каждый день. Например, обработка CSV файлов с помощью Pandas может оказаться куда медленнее чем с помощью консольных утилит вроде csvkit [4], xsv [5] и аналогов. Я когда-то специально для себя делал инструментарий и выносил его в открытый код в утилиту undatum [4] который умел разрезать на куски JSONlines и BSON файлы и, в добавок, поддерживал CSV файлы тоже. Это тоже частая задача, которую пытаются решать инструментами вроде Pandas. Чего не хватает в индустрии дата-инженерии - это большого числа соревнований по преобразованию данных по аналогии с Global Data Compression Competition 2021[7]. Когда есть типовые требования к окружению, компьютер с заранее определенными ресурсами, и набор [не]типовых задач по преобразованию данных. Потому что одну и ту же задачу можно решить десятками разных способов и инструментов. Ссылки: [1] towardsdatascience.com/batch-p…7e65ff36 [2] medium.com/@deepha…ed26d3c1 [3] https://t.me/begtin/3807 [4] https://github.com/wireservice/csvkit [5] https://github.com/BurntSushi/xsv [6] https://github.com/datacoon/undatum [7] https://www.gdcc.tech #data #datatools #readings #dataengineering
Batch Processing 22GB of Transaction Data with Pandas

How you get around limited computational resources and work with large datasets

Medium