将 Spark 模型保存到 pyspark 后,os 不可见
Spark model is not visible to os after saving it in pyspark
我的目标是保存一个 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 文件)复制到本地文件系统,然后从那里使用它,尽管从整体描述来看您更需要 [=] 中描述的方法之一10=]
我的目标是保存一个 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 文件)复制到本地文件系统,然后从那里使用它,尽管从整体描述来看您更需要 [=] 中描述的方法之一10=]