将其保存在pyspark

时间:2018-10-19 23:14:52

标签: python apache-spark pyspark os.path

我的目标是保存一个火花模型然后进行压缩,但是我遇到了问题,因为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集群中执行此操作,并且代码在我的本地计算机上工作,但是不在那儿,所以我不确定问题出在哪里。

1 个答案:

答案 0 :(得分:1)

您的错误是假设该模型将保存到兼容POSIX的本地文件系统中。

ML模型是使用标准的Spark SQL实用程序保存的,因此将使用默认文件系统,该文件系统在正常操作下将指向分布式文件系统,例如HDFS。

最有可能的是,您必须将模型(存储为Parquet文件)复制到本地文件系统,然后从那里使用它,尽管从总体描述来看,您更需要{{3}中描述的方法之一}