我的目标是保存一个火花模型然后进行压缩,但是我遇到了问题,因为os.exists(path)
找不到刚刚创建的模型。这是代码:
...
model.write().save(model_location)
model2 = PipelineModel(PipelineModel).load(model_location) # the model is loaded
print(os.path.exists(model_location)) # prints False
shutil.make_archive(model_location, 'zip', model_location) # this fails, file not found
我认为问题的原因是: os.path.exists() lies 但我仍然不知道如何解决。显然已经创建了模型,因为以后可以将其加载到model2中,并且运行结束后,包含模型的文件夹就在其中。但是,除此之外,诸如等待创建文件夹之类的操作不起作用。
或者这可能是一个火花配置问题,我在Ambari集群中执行此操作,并且代码在我的本地计算机上工作,但是不在那儿,所以我不确定问题出在哪里。
答案 0 :(得分:1)
您的错误是假设该模型将保存到兼容POSIX的本地文件系统中。
ML模型是使用标准的Spark SQL实用程序保存的,因此将使用默认文件系统,该文件系统在正常操作下将指向分布式文件系统,例如HDFS。
最有可能的是,您必须将模型(存储为Parquet文件)复制到本地文件系统,然后从那里使用它,尽管从总体描述来看,您更需要{{3}中描述的方法之一}