在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"))
然而,该文件确实存在于指定的路径上 . 为什么会这样?
Details
关于 h2o
deeplearning example,用于从jupyter笔记本中的python代码访问 h2o
服务 . 一切正常,直到part需要导入 .csv
数据,例如 .
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
UPDATE
想想找到了问题 . h2o python docs指定了
数据路径必须是H2O群集中每个节点的有效路径 . 如果H2O群集中的某个节点无法看到该文件,则H2O群集将抛出异常 .
这提出了一个问题,这是否意味着所有集群节点都需要具有相同的virtualenv(具有相同的绝对路径),我正在运行jupyter笔记本并保持数据/ mydata.csv?