В моей компании мы начнем перенос процессов Oracle PL SQL на Python, и наши данные будут храниться в файлах Parquet. Это более длинная история, почему именно эти технологии, но поверьте мне, это имеет смысл. :)
Средний процесс будет выглядеть так:
- Загрузка / чтение файлов Parquet в Python процессе
- Если источником данных более одного файла , объединение данных (фреймы данных).
- Выполните некоторые математические вычисления с данными.
- Сохраните результат в файл Parquet.
В качестве теста я удалось перенести один процесс, и он работает, результаты хорошие. Однако до сих пор я пробовал только на своем ноутбуке с меньшими тестовыми данными, и я не уверен, какова будет производительность с производственными данными. Файлы паркета большего размера могут занимать 1-2 ГБ.
Вот что я сделал:
- Загрузил / прочитал файлы Parquet с помощью pyarrow.
- Таблицы pyarrow преобразованы в pandas фреймы данных.
- Отфильтрованы и объединены фреймы данных в соответствии с требованиями.
- Я провел математические вычисления (до того, как мне пришлось группировать по).
- Сохраненный результат в файл Parquet.
Что вы думаете об этом решении? Я также читал о dask dataframe (почти такой же, как pandas, но с возможностью параллелизма), но я не мог сделать все, что мог, с pandas dataframe. Итак, в основном мой вопрос заключается в том, есть ли у меня хороший подход или нет, или как лучше всего производить вычисления на большом наборе данных в Python (pandas хорошо или нет, et c).
Большое спасибо за ваш совет и помощь!