Ошибка памяти при импорте файлов IMDb с использованием сценария IMDbPY
При импорте файлов IMDb в MySQL 5 с использованием механизма хранения MyISAM я получаю следующую ошибку памяти:
Traceback (most recent call last):
File "/usr/local/bin/imdbpy2sql.py", line 3072, in <module>
run()
File "/usr/local/bin/imdbpy2sql.py", line 2937, in run
readMovieList()
File "/usr/local/bin/imdbpy2sql.py", line 1531, in readMovieList
mid = CACHE_MID.addUnique(title, yearData)
File "/usr/local/bin/imdbpy2sql.py", line 1135, in addUnique
else: return self.add(key, miscData)
File "/usr/local/bin/imdbpy2sql.py", line 1010, in add
self[key] = c
File "/usr/local/bin/imdbpy2sql.py", line 922, in __setitem__
dict.__setitem__(self, key, counter)
MemoryError
Это на Ubuntu 14.0.4 экземпляр EC2 на AWS с 1 ГБ памяти. Сначала я попытался с помощью этой команды:
imdbpy2sql.py --mysql-force-myisam -d /home/ubuntu/imdb-files/ -u mysql://admin:password@localhost/imdb
А также:
imdbpy2sql.py --mysql-force-myisam -d /home/ubuntu/imdb-files/ -u mysql://admin:password@localhost/imdb -c /home/ubuntu/imdb-files/csv
Оба сбоя с одной и той же ошибкой памяти. Кто-нибудь знает об обходном пути?
ОБНОВЛЕНИЕ (20/06/2015):
Это всегда вызывает эту ошибку памяти в одной и той же точке. Вот состояние таблицы MySQL таблицы заголовков, которую она заполняет.
| Имя | Двигатель | Версия | Row_format | Ряды | Avg_row_length | Длина_данных | Max_data_length | Index_length | Data_free | Автоматическое приращение
| название | MyISAM | 10 | Динамический | 2699999 | 83 | 226543136 | 281474976710655 | 32410624 | 0 | 2700000
И использование памяти в imdbpy2sql.py составляет около 62%. Я не pseron Python, поэтому не уверен, как отладить его, поэтому любой вклад будет принята с благодарностью.
1 ответ
Боюсь, что 1 ГБ общего ОЗУ недостаточно для безопасного запуска imdbpy2sql.py. Возможно, вы можете попробовать другой экземпляр или добавить файл подкачки в вашу систему (это, очевидно, замедлит все).