2017-01-09 5 views
3

У меня есть данные 100-300Go в формате csv (числовой текст + текст в Юникоде), и для этого нужно выполнять регулярные рабочие задания в сводной таблице. После googling/StackOverflow-ing не удалось найти удовлетворительный ответ (только частичный). Удивительно, какое решение является самым быстрым для одиночной машины (64Go RAM):Крупномасштабная сводная таблица в Python

1) Конвертировать и вставлять в PostGres и обрабатывать все в PostGres DB через SQL? (или MySQL ....)

2) Загрузите csv в кусок в Pandas и выполните один за другим вручную?

3) Загрузить csv + конвертировать в HDF и обработать HDF куском?

4) Другое решение.

ответ

0

Для работы на одной машине PostgreSQL может наилучшим образом соответствовать 3 выбранным вами параметрам.

Чтобы сохранить возможность использования памяти, вы можете использовать partitioning и обрабатывать данные кусками.

+0

Какой-нибудь реальный опыт работы на сводной таблице? – Tensor

+0

Да, я использовал эти 3 инструмента для создания сводных таблиц, а также кубиков olap. В диапазоне от 100gb postgreSQL работает так долго, как одно разделение данных, чтобы он мог работать в памяти и избегать использования SWAP. – PabTorre

+0

Что делать, если ваша сводная таблица имеет 2000 столбцов? Как вы поворачиваете, используя реляционную базу данных, потому что предел составляет 1024 столбца для многих из них. – user798719