Оба предлагают широкий спектр инструментов и преимуществ, которые могут заставить нас усомниться в том, какой из двух выбрать в какой-то момент. Речь идет не об изменении всех процессов компании, чтобы они начали использовать Polars или о «смерти» Pandas (это произойдет не в ближайшем будущем). Речь идет о знании других инструментов, которые могут помочь нам сократить затраты и время в процессах, получив такие же или лучшие результаты.
Когда мы используем облачные сервисы, мы уделяем приоритетное внимание определенным факторам, включая их стоимость. Для этого процесса я использую сервисы AWS Lambda со средой выполнения Python 3.10 и S3 для хранения необработанного файла и файла, преобразованного в паркет.
Намерение состоит в том, чтобы получить файл CSV в виде необработанных данных и обработать его с помощью pandas и Polar с целью проверки, какая из этих двух библиотек предлагает нам лучшую оптимизацию ресурсов, таких как память и вес результирующего файла.
]Панды
Это библиотека Python, специализирующаяся на манипулировании и анализе данных. Она написана на C, ее первый выпуск состоялся в 2008 году.
*Поляры *
Это библиотека Python и Rust, специализирующаяся на манипулировании и анализе данных, которая позволяет выполнять параллельные процессы, написана в основном на Rust и выпущена в 2022 году.
Архитектура процесса:
Проект довольно прост, как показано в архитектуре: пользователь помещает CSV-файл в папку work/pandas или work/porlas и автоматически запускает триггер s3 для обработки файла, чтобы преобразовать его в паркет и отправить в обработку.
В этом небольшом проекте используйте две лямбды со следующей конфигурацией:
Память: 2 ГБ
Эфемерная память: 2 ГБ
Время жизни: 600 секунд
Требования
Лямбда с пандами: Pandas, Numpy и Pyarrow
Лямбда с полярами: Поляры
Набор данных, использованный для сравнения, доступен на Kaggle под названием «Обзоры фильмов на Rotten Tomatoes — 1,44 млн строк» или может быть загружен отсюда.
Полный репозиторий доступен на GitHub, его можно клонировать здесь.
Размер или вес
Лямбда, которую использует Pandas, требует еще двух плагинов для создания файла паркета, в данном случае это PyArrow и конкретная версия numpy для версии Pandas, которую я использовал. В результате мы получили лямбду с весом или размером 74,4 МБ, что очень близко к пределу, который AWS допускает для веса лямбды.
Лямбда с Polars не требует другого плагина, такого как PyArrow, который упрощает жизнь и уменьшает размер лямбды менее чем вдвое. В результате наша лямбда имеет вес или размер 30,6 МБ по сравнению с первой, что дает нам место для установки других зависимостей, которые могут нам понадобиться для процесса преобразования.
Производительность
Лямбда с Pandas была оптимизирована для использования сжатия после первой версии, однако ее поведение также было проанализировано.
Панды
Обработка набора данных заняла 18 секунд, а для обработки CSV-файла и создания файла Parquet потребовалось 1894 МБ памяти. По сравнению с другими версиями, именно эта версия требовала больше всего времени и ресурсов.
Сжатие Pandas
Добавление строки кода позволило нам немного улучшиться по сравнению с предыдущей версией (Pandas), на обработку набора данных ушло 17 секунд и использовано 1837 МБ, что представляет собой существенное улучшение не во времени обработки и вычислений, а в размере. полученного файла.
Полярные территории
Обработка того же набора данных заняла 12 секунд, а я использовал всего 1462 МБ, по сравнению с двумя предыдущими, это означает экономию времени на 44,44% и меньшее потребление памяти.
Размер выходного файла
Панды
Лямбда, в которой не был установлен процесс сжатия, создала паркетный файл размером 177,4 МБ.
Сжатие Pandas
При настройке сжатия в лямбде у меня не создается паркетный файл размером 121,1 МБ. Одна небольшая строка или опция помогла нам уменьшить размер файла на 31,74%. Учитывая, что это не существенное изменение кода, это очень хороший вариант.
Полярные территории
Polars создала файл размером 105,8 МБ, который, приобретенный вместе с первой версией Pandas, представляет собой экономию на 40,36% и 12,63% по сравнению с версией Pandas со сжатием.
Заключение
Нет необходимости менять все внутренние процессы, использующие Pandas, чтобы они теперь использовали Polars, однако важно учитывать, что если мы говорим о тысячах или миллионах выполнения лямбда-выражений, использование Polars поможет нам не только с развертыванием время, но также поможет нам снизить затраты благодаря повременной тарификации, которую AWS взимает за бессерверные сервисы, такие как Lambda.
Аналогичным образом, когда мы переводим эти 40,36% в миллионы файлов, мы говорим о ГБ или ТБ, что окажет существенное влияние на Datalake или Dataware или даже на холодное файловое хранилище.
Сокращение с помощью Polars не будет ограничиваться только этими двумя факторами, поскольку это сильно повлияет на вывод данных и/или объектов из AWS, поскольку это услуга, которая имеет свою стоимость.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3