H2OConnectionError:意外的HTTP错误:如何增加H2O中的内存?

时间:2019-02-13 13:17:43

标签: python h2o

使用Spyder在AWS服务器上使用python代码加载数据集时,出现以下错误:

  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)

我正在AWS服务器上的Spyder上运行此python代码。该代码可以正常工作到数据集的一半(1.5gb / 3gb),但是如果我增加数据大小,则会引发错误。我尝试将RAM从61gb增加到122 GB,但这仍然给我同样的错误。

加载数据文件

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

初始化水

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

正在加载水

  

通过http://127.0.0.1:54321连接到H2O服务器...成功。   -------------------------- ------------------------ ------------ H2O集群正常运行时间:01秒H2O集群时区:UTC H2O   数据解析时区:UTC H2O群集版本:3.22.1.3 H2O   集群版本年龄:18天H2O集群总节点数:1 H2O   集群可用内存:133.3 Gb H2O集群总核心数:16 H2O   群集允许的核心:16 H2O群集状态:接受新   成员,健康的H2O连接代理:H2O内部安全性:
  错误的H2O API扩展:Algos,AutoML,Core V3,Core V4   Python版本:2.7.15最终版

     

我怀疑这是内存问题。但是即使增加RAM和max_mem_size之后,数据集也不会加载。

任何解决错误的想法将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

解决方案:不要使用pd.read_csv()h2o.H2OFrame(),而是直接使用h2o.import_file()

错误消息在POST /3/PostFile REST命令上。据我从您的代码和日志片段中得知,这意味着它正在上载到localhost?那真是低效。

((如果不是本地主机,即datafile.csv在计算机上,位于AWS之外,则先将其上传到S3。如果在计算机上进行一些数据处理,则将其保存为新文件,然后将其上传到S3。不必是S3:如果H2O群集中只有一台计算机,则可以是硬盘。)

有关某些背景信息,另请参阅我最近在https://stackoverflow.com/a/54568511/841830https://stackoverflow.com/a/54459577/841830上获得的答案。 (我没有将其标记为重复,好像建议是相同的,每种情况下,原因都有所不同;在这里,我想知道您是否达到了最大HTTP POST文件大小的限制,也许是2GB?我想从所有多个临时副本中复制出来,它也可能用完了磁盘空间。)