【发布时间】:2016-10-20 09:42:49
【问题描述】:
我正在将 ML 模型保存到 S3 存储桶。经过长时间的搜索,thread 帮助我找到了解决方案。我的代码如下所示:
sc.parallelize(Seq(model), 1).saveAsObjectFile("s3a://bucket/nameModel.model")
第一次运行这个工作一切都很顺利。第二次得到了
FileAlreadyExistsException:输出目录 “s3a://bucket/nameModel.model”已经存在`
我没有找到覆盖此模型的解决方案。所以我首先尝试在保存之前删除现有模型:
val instanceProfileCredentialsProvider = new com.amazonaws.auth.InstanceProfileCredentialsProvider()
val amazonS3Client = new AmazonS3Client(instanceProfileCredentialsProvider)
amazonS3Client.deleteObject(new DeleteObjectRequest("bucket", "nameModel.model"))
sc.parallelize(Seq(model), 1).saveAsObjectFile("s3a://bucket/nameModel.model")
没有成功,我仍然遇到同样的异常。新代码似乎并没有删除现有模型。是否有其他方法可以从 s3 存储桶中覆盖或删除当前的 ML 模型?
【问题讨论】:
-
在您的代码中,您在创建“nameModel.model”时删除了“nameModel”。是否只有问题或您的代码中的情况如此?
-
顺便说一句,您是否尝试过启用版本控制您的 s3 存储桶 docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html ?这样你也不会丢失旧模型
-
我编辑了我的问题。那是一个错字。在我的代码中,我实际上是在尝试删除同名的对象。
标签: scala amazon-s3 apache-spark apache-spark-ml