如何将模型从ML Pipeline保存到S3或HDFS?

SH *_* Y. 15 java scala apache-spark apache-spark-ml apache-spark-mllib

我正在努力保存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)
}
Run Code Online (Sandbox Code Playgroud)

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

如何将模型保存到Amazon S3?

Nei*_*eil 10

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

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

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

val linRegModel = sc.objectFile[LinearRegressionModel]("linReg.model").first()
Run Code Online (Sandbox Code Playgroud)

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


Hol*_*den 1

因此FileOutputStream保存到本地文件系统(不是通过 hadoop 库),因此保存到本地目录是执行此操作的方法。也就是说,该目录需要存在,因此首先确保该目录存在。

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