R vs Python в продуктивном контуре
- среда, 7 апреля 2021 г. в 00:34:03
Элегантные трюки в notebook на персональном компьютере (ноутбуке) — это хорошо и интересно. Но как только речь заходит об исполнении кода в продуктивном контуре, тут же появляются масса ограничений в виде:
Нынче в России такая фаза, что для задач data science язык python позиционируется как "серебряная пуля". Похоже, что такой тезис выдвинули те, кто продают курсы по DS на python. А дальше маховик пошел. В целом, это вполне нормально — почти все процессы в физическом мире являются колебательными.
Но, все-таки, в этом хайпе немного недоговаривают. Есть в python ряд досадных моментов, даже в базовых DS задачах, которые сильно усложняют его использование в продуктивном контуре.
Имя этой проблемы — BlockManager
. Это один из столпов архитектуры pandas
. Внешне проявляется в том, что:
Плохо то, что причины такого поведения скрыты за кулисами от обычного разработчика. Такая рулетка в продуктивном контуре при согласованных ресурсах и выделенном окне времени на расчеты мало кому нравится.
Можно, например, почитать:
BlockManager
и допущенные компромиссы в документах автора pandas
Wes McKinney 'What is BlockManager and why does it exist?';Типичная связка pandas
+ sql
/spark
для данных среднего объема (сотни Гб — десятки Тб) по скорости и объему требуемых аппаратных ресурсов очень сильно проигрывает связке data.table
+ Clickhouse
на типичных задачах (преобразования data.frame
). Технические детали и актуальные тесты можно посмотреть на страничке Database-like ops benchmark. Желающие могут сами скачать тесты, выполнить их на своей инфраструктуре и составить собственное мнение.
Story-telling отчеты позволяют крайне эффективно предоставлять пользователям информацию. Удачная реализация концепции Literate Programming. И пользоваться таким отчетами бизнес пользователям весьма удобно. В python
, к сожалению, не наблюдается аналога Rmarkdown
.
Понятно, что тренды у нас формируются курсами и требованиями к вакансиям на hh.ru. Но если говорить о решении практических задач в enterprise то использование связки R
+ Clickhouse
оказывается куда выгоднее. К этой обойме можно еще присовокупить golang
, тоже отличный инструмент.
Fin, доставайте напалм.
Предыдущая публикация — «R, Монте-Карло и enterprise задачи, часть 2».