Skip to main content
 首页 » 编程设计

python之将 Spark 模型保存在 pyspark 中后,操作系统看不到它

2024年09月07日36lonelyxmas

我的目标是保存一个 spark 模型,然后将其压缩,但我遇到了问题,因为 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 中,并且在运行结束后,包含模型的文件夹就在那里。但是,除此之外,等待文件夹创建之类的操作是行不通的。

或者可能是 spark 配置问题,我在 Ambari 集群中执行此操作,代码在我的本地机器上运行但不在本地机器上,所以我不确定问题出在哪里。

请您参考如下方法:

您的错误是假设模型将保存到本地的、符合 POSIX 的文件系统。

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

很可能您必须将模型(存储为 Parquet 文件)复制到本地文件系统,并从那里使用它,尽管从整体描述来看您更需要 How to serve a Spark MLlib model? 中描述的方法之一。