在jupyter笔记本中的python上使用h2o
并收到错误消息:
...
/home/mapr/anaconda2/lib/python2.7/site-packages/h2o/backend/connection.pyc in _process_response(response, save_to)
723 # Client errors (400 = "Bad Request", 404 = "Not Found", 412 = "Precondition Failed")
724 if status_code in {400, 404, 412} and isinstance(data, (H2OErrorV3, H2OModelBuilderErrorV3)):
--> 725 raise H2OResponseError(data)
726
727 # Server errors (notably 500 = "Server Error")
H2OResponseError: Server error water.exceptions.H2ONotFoundArgumentException:
Error: File <path to data file I'm trying to import> does not exist.
尝试使用导入数据时
train = h2o.import_file(path = os.path.realpath("relative path to data file"))
然而,该文件确实存在于指定的路径上。为什么会发生这种情况?
详情
关注h2o
deeplearning example,以便在jupyter笔记本中从python代码访问h2o
服务。一切正常,直到需要导入.csv
数据的part,例如
spiral = h2o.import_file(path = os.path.realpath("../data/spiral.csv"))
此时引发上述错误。
源代码注释#在这种情况下,群集正在我们的笔记本电脑上运行。数据文件由相对位置导入此笔记本。
然而,当跑步时
os.path.exists(os.path.realpath("./data/<my data csv file>"))
笔记本中的,响应为true
。因此看起来相对路径被python os包*识别,但是h2o.import_file()方法存在一些问题。
这可能会发生什么?感谢。
注意:我正在使用实际运行h2o和jupyter-notebook服务的机器进行端口转发,例如:
远程机器:
$jupyter-notebook --no-browser --port=8889
本地机器:
$ssh -N -L localhost:8888:localhost:8889 myuser@mnode01
*目录结构为:
bin
data
|
|_____ mydata.csv
include
lib
remote-h2o.ipynb
更新
认为已经发现了问题。 h2o python docs指定
数据路径必须是H2O群集中每个节点的有效路径。如果H2O集群中的某个节点无法看到该文件,则H2O集群将抛出异常。
这提出了一个问题,这是否意味着所有集群节点都需要具有相同的virtualenv(具有相同的绝对路径),我正在运行jupyter笔记本并保存数据/ mydata.csv?