15

我正在尝试保存由 ML Pipeline 生成的数千个模型。如这里的答案所示,模型可以保存如下:

import java.io._

def saveModel(name: String, model: PipelineModel) = {
  val oos = new ObjectOutputStream(new FileOutputStream(s"/some/path/$name"))
  oos.writeObject(model)
  oos.close
}

schools.zip(bySchoolArrayModels).foreach{
  case (name, model) => saveModel(name, Model)
}

我尝试过使用s3://some/path/$name,并且/user/hadoop/some/path/$name我希望模型最终保存到亚马逊 s3,但它们都失败了,并显示无法找到路径的消息。

如何将模型保存到 Amazon S3?

4

3 回答 3

10

将模型保存到 HDFS 的一种方法如下:

// persist model to HDFS
sc.parallelize(Seq(model), 1).saveAsObjectFile("hdfs:///user/root/linReg.model")

然后可以将保存的模型加载为:

val linRegModel = sc.objectFile[LinearRegressionModel]("linReg.model").first()

有关更多详细信息,请参阅(参考

于 2015-09-19T04:12:59.837 回答
4

由于Apache-Spark 1.6和在ScalaAPI 中,您可以在不使用任何技巧的情况下保存模型。因为,ML 库中的所有模型都带有一个save方法,您可以在LogisticRegressionModel中检查它,它确实具有该方法。通过加载模型的方式,您可以使用静态方法。

val logRegModel = LogisticRegressionModel.load("myModel.model")
于 2016-02-01T19:17:00.977 回答
1

所以FileOutputStream保存到本地文件系统(不是通过hadoop库),所以保存到本地目录是这样做的方法。话虽如此,目录需要存在,所以首先要确保目录存在。

话虽如此,根据您的模型,您可能希望查看https://spark.apache.org/docs/latest/mllib-pmml-model-export.html(pmml导出)。

于 2015-08-30T06:52:47.797 回答