[英]How to save models from ML Pipeline to S3 or HDFS?
我正在努力保存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
因為我希望模型最終保存到amazon s3但是它們都失敗並顯示路徑不能是找到。
如何將模型保存到Amazon S3?
將模型保存到HDFS的一種方法如下:
// persist model to HDFS
sc.parallelize(Seq(model), 1).saveAsObjectFile("hdfs:///user/root/linReg.model")
然后可以將已保存的模型加載為:
val linRegModel = sc.objectFile[LinearRegressionModel]("linReg.model").first()
有關詳細信息,請參閱( 參考 )
從Apache-Spark 1.6
和Scala
API開始,您可以在不使用任何技巧的情況下保存模型。 因為ML庫中的所有模型都帶有一個save
方法,你可以在LogisticRegressionModel中檢查它,實際上它有這個方法。 順便加載模型,您可以使用靜態方法。
val logRegModel = LogisticRegressionModel.load("myModel.model")
因此FileOutputStream
保存到本地文件系統(而不是通過hadoop庫),因此保存到本地目錄是實現此目的的方法。 話雖如此,目錄需要存在,因此請確保該目錄首先存在。
話雖如此,根據您的模型,您可能希望查看https://spark.apache.org/docs/latest/mllib-pmml-model-export.html(pmml export)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.