Comments 4
Чтобы это не было отвратительно медленно в конечном итоге всё равно придется завести какую-нибудь громоздкую dask/spark/flink/datafusion.
Если были проведены какие-то тесты, то приложите, пожалуйста.
Т.к. своё тестирование на скорость я не считаю сколько бы то нибыло полным, я его не приводил. Но в качестве ответа на комментарий приведу пример:
На Python 3.6.12 клеил 2 одинаковых CSV файла размером 1.3МБ, 7.7к строк каждый по значениям в 4 колонках.
На выходе получался CSV файл размером 143МБ. Сравнивались результаты, всё сошлось.
Далее я исключил запись на диск и сравнил скорость:
- Table took 1.9088249206542969 s
- Pandas took 3.9153363704681396 s
- Polars took 2.842676877975464 s
Поэтому "отвратительно медленно" это скорее открытый вопрос, на самом деле нужно проверять насколько :) Все зависит от условий.
P.S. я не предлагаю обрабатывать тонны данных, скорее предлагаю иметь в виду такой инструмент, т.к. простота конечного кода порой выливается в приемлемой скорости.
Ну и неплохой бонус: если через Table
вычитать файл и сложить обратно на диск, можно верить, что файл не изменился.
С pandas
нужно поднапрячься, чтобы файл не мутировал.
P.S.2 Если задача в анализе сотен гигов и более, то можно вгрузить в Clickhouse и там удобно анализировать
Мы в команде по большей части отказались от pandas и используем petl https://petl.readthedocs.io/en/stable/
Стоит ли нам переезжать на convtools?
Python кодогенерация на благо ETL — часть 2