H2OConnectionError: Неожиданная ошибка HTTP: как увеличить объем памяти в H2O? - PullRequest
0 голосов
/ 13 февраля 2019

При загрузке моего набора данных с использованием кода Python на сервер AWS с использованием Spyder я получаю следующую ошибку:

  File "<ipython-input-19-7b2e7b5812b3>", line 1, in <module>
    ffemq12 = load_h2odataframe_returns(femq12) #; ffemq12 = add_fold_column(ffemq12)

  File "D:\Ashwin\do\init_sm.py", line 106, in load_h2odataframe_returns
    fr=h2o.H2OFrame(python_obj=returns)

  File "C:\Program Files\Anaconda2\lib\site-packages\h2o\frame.py", line 106, in __init__
    column_names, column_types, na_strings, skipped_columns)

  File "C:\Program Files\Anaconda2\lib\site-packages\h2o\frame.py", line 147, in _upload_python_object
    self._upload_parse(tmp_path, destination_frame, 1, separator, column_names, column_types, na_strings, skipped_columns)

  File "C:\Program Files\Anaconda2\lib\site-packages\h2o\frame.py", line 321, in _upload_parse
    ret = h2o.api("POST /3/PostFile", filename=path)

  File "C:\Program Files\Anaconda2\lib\site-packages\h2o\h2o.py", line 104, in api
    return h2oconn.request(endpoint, data=data, json=json, filename=filename, save_to=save_to)

  File "C:\Program Files\Anaconda2\lib\site-packages\h2o\backend\connection.py", line 415, in request
    raise H2OConnectionError("Unexpected HTTP error: %s" % e)

Я запускаю этот код Python на Spyder на сервере AWS.Код прекрасно работает до половины набора данных (1,5 ГБ / 3 ГБ), но выдает ошибку, если я увеличиваю размер данных.Я попытался увеличить ОЗУ с 61 до 122 ГБ, но все равно выдает ту же ошибку.

Загрузка файла данных

femq12 = pd.read_csv(r"H:\Ashwin\dta\datafile.csv")    
ffemq12 = load_h2odataframe_returns(femq12)

Инициализация h2o

h2o.init(nthreads = -1,max_mem_size="150G")

Загрузка h2o

Подключение к серверу H2O на http://127.0.0.1:54321... успешно.-------------------------- ------------------------------------ Время работы кластера H2O: 01 с Часовой пояс кластера H2O: часовой пояс для анализа данных UTC H2O: Версия кластера UTC H2O: 3.22.1.3 Возраст версии кластера H2O: 18 дней Общее количество узлов кластера H2O: 1 H2Oсвободной памяти кластера: 133,3 Гб Всего ядер кластера H2O: 16 разрешенных ядер кластера H2O: 16 Состояние кластера H2O: принятие новых членов, исправный прокси-сервер соединения H2O: внутренняя безопасность H2O:
Ложные расширения API H2O: Algos, AutoML, Core V3,Версия Core V4 Python: 2.7.15 final


Я подозреваю, что это проблема с памятью.Но даже после увеличения ОЗУ и max_mem_size набор данных не загружается.

Буду признателен за любые идеи по исправлению ошибки.Спасибо.

1 Ответ

0 голосов
/ 14 февраля 2019

Решение: не используйте pd.read_csv() и h2o.H2OFrame(), а вместо этого используйте h2o.import_file() напрямую.

Сообщение об ошибке находится в команде POST /3/PostFile REST.Что, насколько я могу судить из вашего кода и фрагментов журнала, означает, что он загружается на localhost?Это ужасно неэффективно.

(Если не localhost, т.е. ваш datafile.csv находится на вашем компьютере, который находится за пределами AWS, то сначала загрузите его на S3. Если вы выполняете какие-то операции с данными на своем компьютере,сделайте это, затем сохраните его как новый файл и загрузите его на S3. Это не обязательно должен быть S3: это может быть жесткий диск, если в вашем кластере H2O только одна машина.)

Для получения дополнительной информации см. Также мои недавние ответы на https://stackoverflow.com/a/54568511/841830 и https://stackoverflow.com/a/54459577/841830. (я не помечал как дубликат, как будто совет один и тот же, в каждом случае причина немного отличается; здесь я задаюсь вопросом, не превышаете ли вы максимальный размер файла HTTP POST, возможно, 2 ГБ? Полагаю, на нем также может не хватить места на диске из всех временных копий.)

...