На сколько Python подходит для обработки больших данных?
Я знаю, что для Python сейчас есть много стероидов, которые приближают скорость его выполнения к чистому Си. Однако вопрос, действительно ли они так эффективны в реальной жизни или в них есть узкие места, если да, то какие?
К примеру в каких местах возникнут основные затычки, если я буду писать программу на Python по обработке текстового массива скажем так в 10GB.
Вопрос возник из того, что есть программный комплекс ArcGIS. Часть по геообработке судя по всему написана на Python. На больших данных ArcGIS очень долго думает и процессор загружает только на 10%, что наводит на мысли, что там где-то что-то не так сделано...
Python тут будет не в качестве рабочей лошадки, а в качестве удобной обертки вокруг C++ или Java-кода.
Именно так это и сделано в Arcgis.
Если принципиально сделать быстрый аналитический сервис, используйте Spark для процессинга данных, и Hive для хранения данных.
Что значит обрабатывать?
Например, я парсинг выборки БД на Питоне делаю - 2Гб парсится секунд 7.
Если у вас текстовые данные 10Гб которые считать из файла, выделить нужно и построить график, то разница между Питон и С++ будет незначительна и ней можно пренебречь.
Если там сложная обработка, то можно написать только функцию на С++ и вызывать ее в питоне.
BigData - это не большая база данных (несколько гиг или большой сайт). Это совершенно чётко определённая категория данных для исследования и направление научных исследований над ними. Не путайте реальные вещи с попсовыми трендами. То что ваш софт медленно работает не совершенно не означает, что плохой именно Питон, а не сам криво написанный софт. Скорее всего речь идёт чисто об архитектурных ошибках и о большом накопленном техническом долге, т.е. разработчик уже не в состоянии исправить эту ситуацию, т.к. переработка архитектуры стоит непомерных ресурсов. Для крупных проектов это абсолютно нормальная ситуация. Моя рекомендация, если Ваша проблема не будет решена в течение 6 месяцев ищите другого поставщика решения, т.к. это означает фактически, что проблема не будет решена никогда. Другой альтернативный вариант - ТЕРПИТЕ.